我有一个应用程序崩溃时发生的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的符号服务器上是否不可用?
您要在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