Invalid call stack in crash dump due to mismatched/missing *system* binary file?

浪尽此生 提交于 2019-12-10 12:18:36

问题


Got this callstack when I open a Windows crash dump in Visual Studio 2005:

>   myprog.exe!app_crash::CommonUnhandledExceptionFilter(_EXCEPTION_POINTERS * pExceptionInfo=0x0ef4f318)  Line 41  C++
    pdm.dll!513fb8e2()  
    [Frames below may be incorrect and/or missing, no symbols loaded for pdm.dll]   
    kernel32.dll!_UnhandledExceptionFilter@4()  + 0x1c7 bytes   
    ...

Looking at the module load info:

...
'DumpFM-V235_76_1_0-20110412-153403-3612-484.dmp': Loaded '*C:\Program Files\Common Files\Microsoft Shared\VS7Debug\pdm.dll', No matching binary found.
...

We see that this binary was not even loaded, because the machine used to analyze the dump is a different machine than the machine that produced the dump.

I don't have access to this other machine at the moment -- can I somehow get this stack fixed, or will I always need the exact binary at this exact path location?


回答1:


If you absolutely want to debug this dump in Visual Studio, then you can get away with copying the system DLLs from the machine that produced the dump to the same folder where your .dmp file is. That way, it will load those binaries instead of trying to find them in the same path on the debugging system as they were on the original system (which probably will contain different versions of the same modules).

As Naveen pointer out though, you won't have this problem when loading the dump in WinDBG (for reasons I have yet to understand). That is why when I get a dump from clients, I always analyze them in WinDBG.

If you need help on using WinDBG for crash dump analysis, the following Web site is full of info on the subject: http://www.dumpanalysis.org/.




回答2:


Another option is to use the ModuleRescue tool from the folks at DebugInfo.com. This will scan a dump file, allow you to choose the module that isn't loading symbols, and then it generates a fake module that has just enough info in it for the debugger to load the symbols from the symbol server.

When Visual Studio can't load the symbols for this module and opens a dialog asking you to find the symbols, just point your debugger at that fake module and it will load correctly.

This tool basically does the same thing that WinDbg does, albeit with a different workflow.



来源:https://stackoverflow.com/questions/5714854/invalid-call-stack-in-crash-dump-due-to-mismatched-missing-system-binary-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!