代码之家  ›  专栏  ›  技术社区  ›  David Espart

windbg-检测崩溃转储所需的符号

  •  3
  • David Espart  · 技术社区  · 16 年前

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

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

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

    谢谢您。

    3 回复  |  直到 8 年前
        1
  •  5
  •   Paul B.    8 年前

    你可以使用 !sym noisy 为了让windbg放弃它需要和寻找的符号。 如果使用本地缓存设置符号路径,windbg将只下载所需的符号到本地缓存路径。
    如果您将转储加载到您的机器上,则强制它加载所有符号, lml 命令将显示所有加载的符号,您可以看到从中加载符号的每个模块,仅将这些PDB文件复制到目标受限环境中。

        2
  •  1
  •   JaredPar    16 年前

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

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

    不过,有一种方法会产生不错的结果,那就是:

    • 在所有符号都可用的环境中加载转储
    • 设置目录的符号路径
    • 运行“analyze-v”
    • 此时转储模块的状态,并包含windbg为其加载符号的任何dll的符号。
        3
  •  0
  •   Carlos Rendon    15 年前

    您还可以使用以下命令:

    lml
    

    运行“analyze-v”后,显示加载或试图加载的符号windbg。

    推荐文章