我有一个故障转储文件,我需要使用 windbg 进行分析以运行一些测试。
由于某些限制我无法评论,我的符号文件夹只能包含分析此故障转储所需的符号。
有没有办法知道转储所需的确切符号?如果有帮助,我可以首先在所有符号都可用的另一个环境中分析这个转储。
谢谢你。
您可以使用!sym noisy
Windbg 转储出它需要和寻找的符号。如果您使用本地缓存设置符号路径,Windbg 将仅将所需的符号下载到本地缓存路径中。
如果您在您的机器上加载转储,强制它加载所有符号,该lml
命令将显示所有加载的符号,您可以看到它加载符号的每个模块,仅将那些 pdb 文件复制到目标受限环境中。
我不完全确定这是否可能。分析转储是一个动态过程,但您正在寻找静态解决方案。除非您已经知道问题所在,否则不可能知道需要哪些符号。因此,不可能知道需要哪组符号。
即使做一些简单的事情,比如说“我只会为在堆栈上有框架的 DLL 提供符号”是不够的。内存损坏或来自不在堆栈上的 DLL 的全局变量可能会影响程序的行为。保留该 DLL 的符号可能会妨碍对问题的诊断。
一种会产生不错结果的方法如下
您还可以使用以下命令:
lml
在运行“analyze -v”以显示 WinDbg 加载或尝试加载的符号之后。