当前位置:  开发笔记 > 运维 > 正文

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

如何解决《WinDbg带有来自本机32位应用程序的minidump在64位Windows上崩溃,不会加载系统DLL的符号》经验,为你挑选了1个好方法。

我有一个应用程序崩溃时发生的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(来自Debugging Tools 6.9),在64位Windows 2008上尝试了64位WinDbg(也来自Debugging Tools 6.9)。两者均无法加载符号。这来自32位WinDbg:

0:014>!sym嘈杂
嘈杂模式-符号提示
0:014> .reload
................................................... ....................................
加载卸载模块列表
..
SYMSRV:找不到C:\ WebSymbols \ ntdll.dll \ 48E714D0170000 \ ntdll.dll
SYMSRV:找不到http://msdl.microsoft.com/download/symbols/ntdll.dll/48E714D0170000/ntdll.dll
DBGENG:C:\ Windows \ SysWOW64 \ ntdll.dll-无法从磁盘映射映像。
无法加载映像C:\ Windows \ SysWOW64 \ ntdll.dll,Win32错误0n2
DBGENG:ntdll.dll-部分符号图像加载缺少图像信息
DBGHELP:模块未完全加载到内存中。
DBGHELP:使用调试器提供的数据搜索符号。
SYMSRV:找不到C:\ WebSymbols \ wntdll.pdb \ 6686D0C5D0554E14953396093DA218A92 \ wntdll.pdb
SYMSRV:找不到http://msdl.microsoft.com/download/symbols/wntdll.pdb/6686D0C5D0554E14953396093DA218A92/wntdll.pdb
DBGHELP:wntdll.pdb-找不到文件
***警告:无法验证ntdll.dll的时间戳
***错误:模块加载完成,但无法为ntdll.dll加载符号
DBGHELP:ntdll-未加载任何符号
SYMSRV:找不到C:\ WebSymbols \ kernel32.dll \ 48E7156Cf0000 \ kernel32.dll
SYMSRV:找不到http://msdl.microsoft.com/download/symbols/kernel32.dll/48E7156Cf0000/kernel32.dll
DBGENG:C:\ Windows \ SysWOW64 \ kernel32.dll-无法从磁盘映射映像。
无法加载映像C:\ Windows \ SysWOW64 \ kernel32.dll,Win32错误0n2
DBGENG:kernel32.dll-部分符号图像加载缺少图像信息
DBGHELP:模块未完全加载到内存中。
DBGHELP:使用调试器提供的数据搜索符号。
SYMSRV:找不到C:\ WebSymbols \ wkernel32.pdb \ B0C3B36CC7EF4F3E9C168E186A5A6FEB2 \ wkernel32.pdb
SYMSRV:找不到http://msdl.microsoft.com/download/symbols/wkernel32.pdb/B0C3B36CC7EF4F3E9C168E186A5A6FEB2/wkernel32.pdb
DBGHELP:wkernel32.pdb-找不到文件
***警告:无法验证kernel32.dll的时间戳
***错误:模块加载已完成,但无法为kernel32.dll加载符号
DBGHELP:kernel32-未加载任何符号
SYMSRV:找不到C:\ WebSymbols \ KERNELBASE.dll \ 48E7156D5a000 \ KERNELBASE.dll
SYMSRV:找不到http://msdl.microsoft.com/download/symbols/KERNELBASE.dll/48E7156D5a000/KERNELBASE.dll
DBGENG:C:\ Windows \ SysWOW64 \ KERNELBASE.dll-无法从磁盘映射映像。
DBGENG:KERNELBASE.dll-部分符号图像加载缺少图像信息
DBGHELP:模块未完全加载到内存中。
DBGHELP:使用调试器提供的数据搜索符号。
SYMSRV:找不到C:\ WebSymbols \ wkernelbase.pdb \ A8683F0C515F469B833E3FA562E0DB251 \ wkernelbase.pdb
SYMSRV:找不到http://msdl.microsoft.com/download/symbols/wkernelbase.pdb/A8683F0C515F469B833E3FA562E0DB251/wkernelbase.pdb
DBGHELP:wkernelbase.pdb-找不到文件
***警告:无法验证KERNELBASE.dll的时间戳
***错误:模块加载已完成,但无法为KERNELBASE.dll加载符号
DBGHELP:KERNELBASE-未加载任何符号

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



1> Cory Foy..:

您要在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

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有