Windbg - 检测故障转储所需的符号

时间:2009-10-19 16:39:01

标签: windbg symbols

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

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

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

谢谢。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

甚至做一些简单的事情就像说“我只会为堆栈中有帧的DLL提供符号”是不够的。内存损坏或来自不在堆栈上的DLL的全局变量可能会影响程序的行为。保留该DLL的符号可以防止诊断问题。

虽然可以产生不错结果的一种方法是以下

  • 在所有符号可用的环境中加载转储
  • 将符号路径设置为目录
  • 运行“analyze -v”
  • 此时转储模块的状态,并包含任何加载了windbg符号的DLL的符号。

答案 2 :(得分:0)

您也可以使用命令:

lml

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