WinDbg 的本机 32 位应用程序的小型转储在 64 位 Windows 上崩溃,不会加载系统 DLL 的符号

发布于 2024-07-07 17:16:26 字数 3440 浏览 9 评论 0原文

我从我们的一个应用程序崩溃中获得了一个小型转储文件。 它是一个 32 位本机应用程序,在 64 位 Windows 上运行。

如果我将小型转储文件加载到 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 的符号服务器上不可用吗?

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.

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:

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

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:

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苏佲洛 2024-07-14 17:16:27

请考虑此处提到的解决方法,其中将 syswo64\ntdll.dll 复制到 Syswow64\ntdll32.dll

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

对我有用。

Consider the workaround mentionned here where syswo64\ntdll.dll is copied to Syswow64\ntdll32.dll

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

Works for me.

冰雪之触 2024-07-14 17:16:26

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

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

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

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

< a href="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" rel="noreferrer">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

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:

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

Also, take a look at this article where he is debugging a 32-bit app running on a 64-bit platform:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文