I've got a minidump file from a crash in one of our apps. It's a 32-bit native app, and it was running on 64-bit Windows.
我有一个迷你转储文件,来自我们的一个应用程序的崩溃。它是一个32位的本地应用,运行在64位Windows上。
If I load the minidump file into WinDbg, WinDbg won't load the symbols for the system DLLs. I've got my symbol paths configured correctly:
如果我将minidump文件加载到WinDbg中,那么WinDbg将不会加载系统dll的符号。我已经正确地配置了符号路径:
_NT_SYMBOL_PATH=SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols
...because WinDbg correctly loads symbols for minidumps created on 32-bit Windows. It just won't load symbols for DLLs in the SysWOW64 directory.
…因为WinDbg正确地装载了在32位窗口上创建的小转储的符号。它不会在SysWOW64目录中加载dll的符号。
I've tried 32-bit WinDbg (from Debugging Tools 6.9) on 32-bit Windows 2003, and 64-bit WinDbg (also from Debugging Tools 6.9) on 64-bit Windows 2008. Both fail to load the symbols. This is from the 32-bit WinDbg:
我在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
Any ideas? Are the symbols just not available on Microsoft's symbol server?
什么好主意吗?这些符号在微软的符号服务器上是不可用的吗?
2 个解决方案
#1
4
Are you debugging on a 32-bit or 64-bit system, and with the 32 or 64-bit version of WinDBG? You typically have to debug on the same architecture package you took the dump from:
您是否正在32位或64位系统上调试,以及使用32位或64位版本的WinDBG?通常,您必须对您从:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
"The 32-bit version of Debugging Tools for Windows is the best choice, unless you are debugging an application on a 64-bit processor. In that case, you should use a 64-bit package."
32位版本的Windows调试工具是最好的选择,除非您正在64位处理器上调试应用程序。在这种情况下,您应该使用64位包。
Also, take a look at this article where he is debugging a 32-bit app running on a 64-bit platform:
另外,看看本文,他正在调试一个在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
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
#2
-1
Consider the workaround mentionned here where syswo64\ntdll.dll is copied to Syswow64\ntdll32.dll
考虑一下这里提到的解决方案,syswo64\ntdll。dll被拷贝到Syswow64\ntdll32.dll中
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98781&wa=wsignin1.0
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98781&wa=wsignin1.0
Works for me.
为我工作。
#1
4
Are you debugging on a 32-bit or 64-bit system, and with the 32 or 64-bit version of WinDBG? You typically have to debug on the same architecture package you took the dump from:
您是否正在32位或64位系统上调试,以及使用32位或64位版本的WinDBG?通常,您必须对您从:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
"The 32-bit version of Debugging Tools for Windows is the best choice, unless you are debugging an application on a 64-bit processor. In that case, you should use a 64-bit package."
32位版本的Windows调试工具是最好的选择,除非您正在64位处理器上调试应用程序。在这种情况下,您应该使用64位包。
Also, take a look at this article where he is debugging a 32-bit app running on a 64-bit platform:
另外,看看本文,他正在调试一个在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
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
#2
-1
Consider the workaround mentionned here where syswo64\ntdll.dll is copied to Syswow64\ntdll32.dll
考虑一下这里提到的解决方案,syswo64\ntdll。dll被拷贝到Syswow64\ntdll32.dll中
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98781&wa=wsignin1.0
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98781&wa=wsignin1.0
Works for me.
为我工作。