在以下方式从上 读一。dmp文件

具有收到一个垃圾场文件从客户的随机,运行调试届会议看到的崩溃,你往往会发现它是在一个MS或其他第三方图书馆。下一个问题是,你可能不知识的电脑安装到这样的程度,可以保证你的实际上模块。

例如,我们目前坚持努力,以获得符号来负荷ntdll.dll (5.01.2600.5512).在MSVC2005年的路径列在模块窗口列表显示了之前完全pathed文件的名字,并拒绝装载的符号我已经下载XP/SP1/SP1a/SP2/SP3。

我有的符号服务器安装到从因特网下载和存储在一个地方的高速缓存这似乎已作好为模块,我有我的电脑上。使用GUI equivelant的方法

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文件,以获得符号我需要什么?

有帮助吗?

解决方案

你用什么来调试minidump?即,WinDBG或Visual Studio? minidump是如何产生的?

minidump中应该有足够的信息来正确解析系统dll符号。您使用的是本地符号下载还是 http://msdl.microsoft.com/

更新:您应该能够将公共微软符号存储添加到工具 - >选项 - >调试 - >符号 - >符号文件(.pdb)位置,然后通过右键单击手动加载符号在模块窗口中的模块上,如果没有自动完成,则加载它们。

也许(可能)VS 2005不会查看 _NT_SYMBOL_PATH 来解析minidump符号。

其他提示

如果您使用的是WinDbg( Windows调试工具的一部分) package),然后很容易让它从Microsoft自动为你拉出正确的符号。使用“.symfix”配置符号路径。 (或“.symfix +”,简单地附加到现有的符号搜索路径)命令。

完成后,如果在WinDbg中加载了故障转储,请键入“.reload / f”;使WinDbg重新加载符号。它将使用转储文件本身中的信息从Microsoft的公共符号服务器中提取正确的符号,无论您的计算机上有哪些DLL。

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

这篇文章的信息也可能有用。

如果你输入"Set _NT_SYMBOL_PATH = srv..."成一个命令,有两个要考虑的事项:

  • cmd.exe's set 命令不忽略的空白,因此这个定义的一个变量的所谓的"_NT_SYMBOL_PATH",不"_NT_SYMBOL_PATH".
  • 你必须开始调试器作为一个孩子的命令提示。但是,你不必这样做,如果你使用了控制面板设置的持久性环境变量,或者如果您使用 setx 命令(在Windows Vista或一个窗口资源工具包).

如果你设置的符号的路径一些其他的方式,那么这并不适用。

请尝试按照此kb文章中的说明操作,并确保您的符号路径已配置正确地说,WinDbg可以访问它,并且ntdll符号(例如)实际上已下载到符号缓存中。本文还提供了有关如何通过SymChk工具手动下载和验证缓存中的符号的说明。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top