未处理的异常-如何调试
c++ Unhandled exception - how to debug
在调试模式下运行测试用例时,我遇到了一个问题:我得到一个弹出框,提示"Test.exe: 0xE0000003: 0xE0000003中的0x7c812fd3未处理异常"。代码在free.c:
中中断。void __cdecl _free_base (void * pBlock)
{
int retval = 0;
if (pBlock == NULL)
return;
RTCCALLBACK(_RTC_Free_hook, (pBlock, 0));
retval = HeapFree(_crtheap, 0, pBlock);
if (retval == 0)
{
errno = _get_errno_from_oserr(GetLastError());
}
}
在line "retval =…"与_crtheap = 0x00df0000和pBlock = 0x967c93d3。调用栈在"kernel32.dll!7c812fd3()"处中断。"在调用堆栈中更下面的另一个条目:"> msvcr100d.dll !_free_base(void * pBlock=0x967c93d3) Line 50 + 0x13 bytes".
我已经谷歌相当多的问题可能来自释放内存几次。除了这种模糊和混乱的描述,有人能提示如何定位问题吗?也许如何解决它呢?
让我感到有点奇怪的是,当我在发布模式下运行测试时,我没有遇到这种情况…
亲切的问候,Svend
您是否尝试过在visual studio调试器下运行这些测试用例?调试器应该捕获此异常,您可以验证调用堆栈并找到问题所在。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 在linux上调试巨大的C++项目
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 正在VS调试器中监视映射条目
- 使用调试/崩溃报告将应用程序部署到客户端
- VC++本机单元测试,找不到调试符号
- 如何在C++生成器中禁用"使用调试.dcus"
- 使用vscode调试时,GDB意外退出
- 即使使用调试编译标志,表达式也是"optimized out"
- 调试 CUDA MMU 故障
- 为什么迭代器调试在调试版本中会减慢 std::unordered_map 200 倍?
- 调试和发布配置 (c++) 中内置的共享库之间的用法有何区别?
- 是否可以使用调试器调试UnhandledExceptionFilters
- 调试使用调试标志运行的代码,并使用 opt 标志运行段错误
- C++如何在定义了宏调试的调试模式下操作
- 尝试使用Visual Studio 2008堆调试器调试内存泄漏
- 调试一个调试的c++ COM dll与pdb,但没有源代码
- 调试与发布可执行文件有何不同?
- 如何使用Microsoft Visual C++调试器调试MinGW EXE