应用程序抛出异常没有附加调试器
我在这里遇到了一个奇怪的问题,说实话,我不知道是什么原因造成的。 无论出于何种原因,当我从Qt Creator调试我的应用程序时,我的应用程序运行良好,没有任何异常,但是当我仅运行应用程序时,出现写访问冲突异常(如下所示)
(1f68.1ea8):访问冲突 - 代码c0000005(第一次机会)
0x77da2073处的异常,代码:0xc0000005:在ntdll!中写入访问冲突:0x1,flags = 0x0!RtlpLowFragHeapFree
在任何异常处理之前报告第一次机会异常。
这个例外可能会被预期和处理。
eax = 00720065 ebx = 82130074 ecx = 006f007f edx = 0000006f esi = 01fa5fb6 edi = 82130000 eip = 77da2073 esp = 0012cc70 ebp = 0012cca4 iopl = 0 nv up ei pl nz na po nc cs = 001b ss = 0023 ds = 0023 es = 0023 fs = 003b gs = 0000 efl = 00010202
ntdll!RtlpLowFragHeapFree + 0xc5:77da2073 8930 mov dword ptr [eax],esi ds:0023:00720065 = ????????
0x77da2073处的异常,代码:0xc0000005:在0x1,flags = 0x0处写入访问冲突
注:不正确的自发停止
状态从InferiorRunOk(11)变成了InferiorStopOk(14)。
当我在注释掉它的分界线(在运行之后,然后手动附加调试器)时,它似乎使我对同一问题有不同的看法。 我正在使用的工具链是MSVCC,附加标志:
QMAKE_CFLAGS_RELEASE + = -Zi
QMAKE_CXXFLAGS_RELEASE + = -Zi -g
QMAKE_LFLAGS_RELEASE + = / DEBUG / OPT:REF
要重新计算,这里是我尝试过的:
你是否放弃了一些东西? 快速搜索提出了关于双重释放的这篇文章。
我不确定什么是MSVCC等效物(文章提到一个名为gflags.exe
的工具),但是在Linux下使用GCC,您可以使用名为Valgrind的程序和memcheck工具来找到这类问题。
上一篇: Application throws exception without debugger attached
下一篇: How to debug win 32 process to find memory access violation?