未处理的异常-如何调试

c++ Unhandled exception - how to debug

本文关键字:调试 何调试 异常 未处理      更新时间:2023-10-16

在调试模式下运行测试用例时,我遇到了一个问题:我得到一个弹出框,提示"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调试器下运行这些测试用例?调试器应该捕获此异常,您可以验证调用堆栈并找到问题所在。