3

我有一个故障转储文件,我需要使用 windbg 进行分析以运行一些测试。

由于某些限制我无法评论,我的符号文件夹只能包含分析此故障转储所需的符号。

有没有办法知道转储所需的确切符号?如果有帮助,我可以首先在所有符号都可用的另一个环境中分析这个转储。

谢谢你。

4

3 回答 3

5

您可以使用!sym noisyWindbg 转储出它需要和寻找的符号。如果您使用本地缓存设置符号路径,Windbg 将仅将所需的符号下载到本地缓存路径中。
如果您在您的机器上加载转储,强制它加载所有符号,该lml命令将显示所有加载的符号,您可以看到它加载符号的每个模块,仅将那些 pdb 文件复制到目标受限环境中。

于 2009-10-19T16:51:01.327 回答
1

我不完全确定这是否可能。分析转储是一个动态过程,但您正在寻找静态解决方案。除非您已经知道问题所在,否则不可能知道需要哪些符号。因此,不可能知道需要哪组符号。

即使做一些简单的事情,比如说“我只会为在堆栈上有框架的 DLL 提供符号”是不够的。内存损坏或来自不在堆栈上的 DLL 的全局变量可能会影响程序的行为。保留该 DLL 的符号可能会妨碍对问题的诊断。

一种会产生不错结果的方法如下

  • 在所有符号都可用的环境中加载转储
  • 设置符号路径到目录
  • 运行“分析-v”
  • 此时转储模块的状态并包含任何 DLL 的符号,windbg 为其加载了符号。
于 2009-10-19T16:45:18.157 回答
0

您还可以使用以下命令:

lml

在运行“analyze -v”以显示 WinDbg 加载或尝试加载的符号之后。

于 2010-01-04T21:04:26.600 回答