gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:26:20 24 4
gpt4 key购买 nike

我从我们的一个应用程序的崩溃中获得了一个小型转储文件。这是一个 32 位 native 应用程序,它在 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 嘈杂
嘈杂模式 - 符号提示开启
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

"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."



另外,看看这篇文章,他正在调试一个在 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

关于debugging - WinDbg,来自 native 32 位应用程序的 minidump 在 64 位 Windows 上崩溃,不会加载系统 DLL 的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/265449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com