【发布时间】:2010-11-15 21:10:20
【问题描述】:
首先让我说我是一个完全的 WinDbg 菜鸟,所以这可能是一个简单的问题......
我正在尝试调试一个应用程序(“MyApp” - 更改名称以保护无辜者!),因为它正在引发异常。这只发生在用户机器上 - 我无法在我的开发机器上重现它。所以我在用户机器上设置了 DebugDiag 并捕获了一个 Full Dump。然后我在 WinDbg 中加载了转储并执行了 analyze -v 和 kp 以试图弄清楚发生了什么......但这些似乎都没有给我我正在寻找的信息 - 函数(并希望是导致问题的行的行号)...我想我通过在符号文件路径中指定“MyApp.pdb”的路径来加载符号文件:
首先,这是kp 的输出:
我特别要解码的行是“MyApp!DllMain+0x65329”,因为这是似乎正在执行的最后一行,并且错误发生在 malloc 调用中,这显然是异常所在被抛出。我做错了什么使它只显示模块和偏移量而不是源文件和行号?
我也不确定为什么 malloc 调用上方的行再次回到 MyApp - 也许有人也可以解释一下。
以防万一,这是'analyze -v'的输出:
0:004> !分析-v ****************************************************** ***************************** * * * 异常分析 * * * ****************************************************** ***************************** *** 警告:无法验证 MyApp.exe 的校验和 *** 错误:模块加载完成,但无法为 MyApp.exe 加载符号 *** 警告:无法验证 ThirdPartyDll.dll 的校验和 *** 错误:找不到符号文件。默认为 ThirdPartyDll.dll 导出符号 - *** 警告:无法验证 mdnsNSP.dll 的校验和 *** 错误:找不到符号文件。默认为 mdnsNSP.dll 导出符号 - *** 错误:找不到符号文件。默认为 SLC.dll 导出符号 - FAULTING_IP: MyApp!DllMain+3e8a6 04e1f936 8b16 mov edx,dword ptr [esi] EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff) 异常地址:04e1f936 (MyApp!DllMain+0x0003e8a6) 异常代码:c0000005(访问冲突) 异常标志:00000000 数量参数:2 参数[0]:00000000 参数[1]:00000000 尝试从地址 00000000 读取 PROCESS_NAME:MyApp.exe ERROR_CODE: (NTSTATUS) 0xc0000005 - “0x%08lx”处的指令引用了“0x%08lx”处的内存。内存不能是“%s”。 EXCEPTION_CODE:(NTSTATUS)0xc0000005 - “0x%08lx”处的指令引用了“0x%08lx”处的内存。内存不能是“%s”。 EXCEPTION_PARAMETER1:00000000 EXCEPTION_PARAMETER2:00000000 READ_ADDRESS:00000000 FOLLOWUP_IP: msvcr71!_heap_alloc+e0 [f:\vs70builds\3052\vc\crtbld\crt\src\malloc.c @ 212] 7c3416b3 e88e0c0000 调用 msvcr71!__SEH_epilog (7c342346) NTGLOBALFLAG:0 APPLICATION_VERIFIER_FLAGS:0 LAST_CONTROL_TRANSFER:从 00000000 到 773bbb33 FAULTING_THREAD: ffffffff BUGCHECK_STR:APPLICATION_FAULT_ACTIONABLE_HEAP_CORRUPTION_heap_failure_freelists_corruption_NULL_POINTER_READ_SHUTDOWN PRIMARY_PROBLEM_CLASS:ACTIONABLE_HEAP_CORRUPTION_heap_failure_freelists_corruption_SHUTDOWN DEFAULT_BUCKET_ID:ACTIONABLE_HEAP_CORRUPTION_heap_failure_freelists_corruption_SHUTDOWN 堆栈文本: 773bbb33 ntdll!RtlpAllocateHeap+0x7ad 773a6e0c ntdll!RtlAllocateHeap+0x1e3 7c3416b3 msvcr71!_heap_alloc+0xe0 FAULTING_SOURCE_CODE: 找不到“f:\vs70builds\3052\vc\crtbld\crt\src\malloc.c”的源 SYMBOL_STACK_INDEX:2 SYMBOL_NAME: msvcr71!_heap_alloc+e0 FOLLOWUP_NAME:机器所有者 模块名称:msvcr71 IMAGE_NAME:msvcr71.dll DEBUG_FLR_IMAGE_TIMESTAMP:3e561eac STACK_COMMAND: dds 7740c078 ; KB FAILURE_BUCKET_ID:ACTIONABLE_HEAP_CORRUPTION_heap_failure_freelists_corruption_SHUTDOWN_c0000005_msvcr71.dll!_heap_alloc BUCKET_ID:APPLICATION_FAULT_ACTIONABLE_HEAP_CORRUPTION_heap_failure_freelists_corruption_NULL_POINTER_READ_SHUTDOWN_msvcr71!_heap_alloc+e0【问题讨论】: