【问题标题】:Convert DBG into PDB?将 DBG 转换为 PDB?
【发布时间】:2012-02-12 16:20:26
【问题描述】:

我有一个 Win32 编译器,多年来,它一直能够创建 DBG debug information file

这允许调试器以及 Process ExplorerProcess Monitor 等工具访问符号信息:

我最近了解到 Visual Studio 的调试器不再接受 DBG 文件,只接受未记录的 Program Database (PDB) 文件:

由于 Microsoft 保留 PDB 格式 secret,我假设他们有一个工具可以让我将现有的调试信息转换为 PDB(所以我不知道他们文件格式的秘密)。

阅读奖励

无证

尽管 Microsoft 有一个用于 PDB 的 GitHub 存储库,但该规范仍然完全没有文档记录。他们存储库中的文件不完整。缺少类型和声明。

即使我已经创建了 PDBViewer:

它没有得到我任何东西 - 因为微软没有解释它的任何含义

重点不仅仅是查看 PDB - 我们需要创建一个。为此,我们需要知道:

  • 里面有什么
  • 在哪里
  • 什么格式

【问题讨论】:

  • 您提到的 cv2pdb 程序似乎是您自己问题的答案(因为 .dbg 文件是 CodeView 格式)

标签: winapi pdb-files


【解决方案1】:

PDB 没有文档记录,但您可以使用适当的接口See Sample

以编程方式收集有关 PDB 文件内容的非常详细的信息

【讨论】:

  • 这就像通过运行查询能够理解 SQL Server 数据库文件格式一样。
【解决方案2】:

Microsoft in a GitHub repository 现在通过代码记录 PDB 格式。 LLVM 还有一个great overview,部分基于微软的文档。

这不是一个完整的答案,因为您仍然需要编写工具来进行转换...

【讨论】:

    【解决方案3】:

    LLVM 开发人员documented the PDB file format 以使 clang 和 lld 能够读取和生成 PDB 文件。 Microsoft's PDB Github repository 的设立部分是为了支持这项工作。

    PDB 主要是 Microsoft 记录的 CodeView 调试信息的容器。

    LLVM 提供了用于处理 PDB 和 COFF 调试信息的库,以及用于从 YAML 检查和生成它们的命令行工具。

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-14
      • 2019-01-03
      相关资源
      最近更新 更多