使用故障转储从符号服务器提取PDB和可执行文件

时间:2017-06-02 19:17:24

标签: visual-studio-2015 symbols crash-dumps

我能够调试我的大型组织生成的几乎所有崩溃转储,因为所有符号和相关可执行文件都压缩存储在中心符号存储位置。在我需要将崩溃转储及其所有相关的pdb和可执行文件发送到公司外部以调试第三方库之前,永远不会有问题。

我最后一次这样做,我不得不执行大量的试验和错误来从符号存储中收集我需要的文件,这些文件大多是机器组织的,而不是非常人性化的。如果我可以打开崩溃转储并让Visual Studio提取并将我需要的所有文件从符号存储区保存到另一个文件夹,那么我可以发送它进行分析。

知道有什么方法可以做到吗?

1 个答案:

答案 0 :(得分:0)

我不知道Visual Studio的解决方案。但是,这个问题可以通过Microsoft免费提供的Debugging Tools for Windows中的WinDbg或SymChk来解决。

据我所知,符号服务器只存储PDB而不存储可执行文件,因此以下说明仅适用于PDB。

WinDbg有一个命令!SaveAllModules,它可能用于保存转储文件中存在的所有DLL和可执行文件。我没有很多经验。

WinDbg中的步骤

在具有Internet连接并连接到公司的符号服务器的计算机上

  1. 在WinDbg中打开崩溃转储
  2. Set up the symbols,例如添加公司符号服务器和Microsoft符号服务器。对于缓存位置,请选择一个空目录。
  3. 运行命令.reload /fld*
  4. 这会将所有可用符号下载到已定义的目录中。

    SymChk的步骤

    在具有Internet连接并连接到公司的符号服务器的计算机上

    1. 从命令行提示符处运行

      symchk /id <dumpfile>.dmp /s srv*x:\symbols\*http://msdl.microsoft.com/download/symbols /od
      

      其中

      • /id用于“输入转储”
      • /s定义符号路径。确保你的语法正确。不要忘记包含公司符号服务器
      • /od用于“输出详细信息”(详细模式)以显示任何问题