gpt4 book ai didi

c++ - 当提供 windows .dmp 或 .minidmp 时,您如何识别(并访问)要使用的模块/调试符号

转载 作者:行者123 更新时间:2023-11-30 02:13:23 24 4
gpt4 key购买 nike

reading a windows *.dmp file开始的某种方式

从随机客户那里收到转储文件,运行调试 session 以查看崩溃,您通常会发现它位于 MS 或其他第三方库中。下一个问题是您对 PC 设置的了解程度可能不足以确保您拥有实际可用的模块。

例如,我目前一直在尝试为 ntdll.dll (5.01.2600.5512) 加载符号。在 MSVC 2005 中,模块列表窗口中的路径列在完整路径文件名前显示一个 *,并且拒绝加载我为 XP/SP1/SP1a/SP2/SP3 下载的符号。

我有符号服务器设置,可以从 Internet 下载并存储在本地缓存中,这对于我 PC 上的模块来说似乎工作正常。使用与方法等效的 GUI

Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols

也许我的符号有误,但由于没有下载新符号,下一步我该去哪里?是不是要联系客户,问他们装了什么SP,还有什么补丁?我是否必须安装该机器,然后使用 dmp 文件运行调试器以获取我需要的符号?

最佳答案

如果您使用的是 WinDbg(Debugging Tools for Windows 包的一部分),那么很容易让它自动从 Microsoft 为您提取正确的符号。使用“.symfix”(或“.symfix+”,简单地附加到您现有的符号搜索路径)命令配置符号路径。

一旦完成并在 WinDbg 中加载故障转储,键入“.reload/f”以使 WinDbg 重新加载符号。它会使用转储文件本身中的信息从 Microsoft 的公共(public)符号服务器中提取正确的符号,无论您的计算机上有什么 DLL。

如果出于某种原因在您完成此操作后符号未正确加载,请在 WinDbg 的命令窗口中输入“!sym noisy”并再次重新加载符号。当 WinDbg 尝试加载它们时,您将看到它输出它在搜索/加载过程中遇到的任何错误。这些错误消息将帮助您进一步诊断出了什么问题以及为什么没有加载正确的符号。

This post有可能也有用的信息。

关于c++ - 当提供 windows .dmp 或 .minidmp 时,您如何识别(并访问)要使用的模块/调试符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/402314/

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