WinDbg,来自本机32位应用程序的minidump在64位Windows上崩溃,不会加载系统DLL的符号

时间:2008-11-05 15:18:57

标签: debugging symbols win64

我在其中一个应用中遇到了崩溃的minidump文件。它是一个32位的本机应用程序,它运行在64位Windows上。

如果我将minidump文件加载到WinDbg中,WinDbg将不会加载系统DLL的符号。我已正确配置了符号路径:

_NT_SYMBOL_PATH=SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols

...因为WinDbg正确加载了在32位Windows上创建的小型转储的符号。它只是不会在SysWOW64目录中加载DLL的符号。

我在32位Windows 2003上尝试过32位WinDbg(来自调试工具6.9),在64位Windows 2008上尝试过64位WinDbg(也来自调试工具6.9)。两者都无法加载符号。这是来自32位WinDbg:

0:014> !sym noisy
noisy mode - symbol prompts on
0:014> .reload
....................................................................................
Loading unloaded module list
..
SYMSRV:  C:\WebSymbols\ntdll.dll\48E714D0170000\ntdll.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/ntdll.dll/48E714D0170000/ntdll.dll not found
DBGENG:  C:\Windows\SysWOW64\ntdll.dll - Couldn't map image from disk.
Unable to load image C:\Windows\SysWOW64\ntdll.dll, Win32 error 0n2
DBGENG:  ntdll.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
DBGHELP: Searching for symbols using debugger-provided data.
SYMSRV:  C:\WebSymbols\wntdll.pdb\6686D0C5D0554E14953396093DA218A92\wntdll.pdb not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/wntdll.pdb/6686D0C5D0554E14953396093DA218A92/wntdll.pdb not found
DBGHELP: wntdll.pdb - file not found
*** WARNING: Unable to verify timestamp for ntdll.dll
*** ERROR: Module load completed but symbols could not be loaded for ntdll.dll
DBGHELP: ntdll - no symbols loaded
SYMSRV:  C:\WebSymbols\kernel32.dll\48E7156Cf0000\kernel32.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/kernel32.dll/48E7156Cf0000/kernel32.dll not found
DBGENG:  C:\Windows\SysWOW64\kernel32.dll - Couldn't map image from disk.
Unable to load image C:\Windows\SysWOW64\kernel32.dll, Win32 error 0n2
DBGENG:  kernel32.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
DBGHELP: Searching for symbols using debugger-provided data.
SYMSRV:  C:\WebSymbols\wkernel32.pdb\B0C3B36CC7EF4F3E9C168E186A5A6FEB2\wkernel32.pdb not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/wkernel32.pdb/B0C3B36CC7EF4F3E9C168E186A5A6FEB2/wkernel32.pdb not found
DBGHELP: wkernel32.pdb - file not found
*** WARNING: Unable to verify timestamp for kernel32.dll
*** ERROR: Module load completed but symbols could not be loaded for kernel32.dll
DBGHELP: kernel32 - no symbols loaded
SYMSRV:  C:\WebSymbols\KERNELBASE.dll\48E7156D5a000\KERNELBASE.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/KERNELBASE.dll/48E7156D5a000/KERNELBASE.dll not found
DBGENG:  C:\Windows\SysWOW64\KERNELBASE.dll - Couldn't map image from disk.
DBGENG:  KERNELBASE.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
DBGHELP: Searching for symbols using debugger-provided data.
SYMSRV:  C:\WebSymbols\wkernelbase.pdb\A8683F0C515F469B833E3FA562E0DB251\wkernelbase.pdb not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/wkernelbase.pdb/A8683F0C515F469B833E3FA562E0DB251/wkernelbase.pdb not found
DBGHELP: wkernelbase.pdb - file not found
*** WARNING: Unable to verify timestamp for KERNELBASE.dll
*** ERROR: Module load completed but symbols could not be loaded for KERNELBASE.dll
DBGHELP: KERNELBASE - no symbols loaded

有什么想法吗?这些符号在Microsoft的符号服务器上是不可用的吗?

2 个答案:

答案 0 :(得分:4)

您是在32位还是64位系统上调试,还是使用32位或64位版本的WinDBG?您通常必须在从转储中获取的相同体系结构包上进行调试:

http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

  

“32位版本的Windows调试工具是最佳选择,除非您在64位处理器上调试应用程序。在这种情况下,您应该使用64位软件包。”

另外,看看这篇文章,他正在调试在64位平台上运行的32位应用程序:

http://blogs.msdn.com/alejacma/archive/2008/07/18/How-to-use-Windbg-to-debug-a-dump-of-a-32bit-.NET-app-running-on-a-x64-machine.aspx

答案 1 :(得分:-1)

考虑这里提到的解决方法,其中syswo64 \ ntdll.dll被复制到Syswow64 \ ntdll32.dll

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98781&wa=wsignin1.0

适合我。