程序数据库PDB调试文件

程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置进行增量链接。当以  /ZI 或 /Zi(用于 C/C++)生成时,将创建一个 PDB 文件。

在 Visual C++ 中,/Fd 选项用于命名由编译器创建的 PDB 文件。当使用向导在 Visual Studio 中创建项目时,/Fd 选项被设置为创建一个名为project.PDB 的 PDB。

如果使用生成文件创建 C/C++ 应用程序,并指定 /ZI/Zi 而不指定 /Fd 时,则最终将生成两个 PDB 文件:

  • VC80.PDB   (更笼统地说就是 VCx0.PDB,其中x 表示 Visual C++ 的版本。)该文件存储各个 OBJ 文件的所有调试信息并与项目生成文件驻留在同一个目录中。

  • project.PDB   该文件存储 .exe 文件的所有调试信息。 对于 C/C++,它驻留在 \debug 子目录中。

每当创建 OBJ 文件时,C/C++ 编译器都将调试信息合并到 VCx0.PDB 中。插入的信息包括类型信息,但不包括函数定义等符号信息。 因此,即使每个源文件都包含公共头文件(如 <windows.h>),这些头文件中的 typedef 也只存储一次,而不是在每个 OBJ 文件中都存在。

链接器将创建 project.PDB,它包含项目的 EXE 文件的调试信息。project.PDB 文件包含完整的调试信息(包括函数原型),而不仅仅是在 VCx0.PDB 中找到的类型信息。这两个 PDB 文件都允许增量更新。 链接器还在其创建的 .exe 或 .dll 文件中嵌入 .pdb 文件的路径。

Visual Studio 调试器使用 EXE 或 DLL 文件中的 PDB 路径查找 project.PDB 文件。如果调试器在该位置无法找到 PDB 文件或者如果路径无效(例如,如果项目被移动到了另一台计算机上),调试器将搜索包含 EXE 的路径,即在“选项”对话框(“调试”文件夹,“符号”节点)中指定的符号路径。如果调试器无法找到 .PDB 文件,则显示“查找符号”对话框,这将允许您搜索符号或向搜索路径添加其他位置。

重要事项

调试器只会为二进制文件加载与该二进制文件生成之时所创建的 PDB 完全相符的 PDB(就是说,该 PDB 必须是原 PDB 或其副本)。因为编译器在创建二进制文件时会考虑多种因素,所以,即使代码自身没有变化,二进制文件的实际布局也可能会有变化。

DBG 文件

DBG 文件是可迁移可执行 (PE) 格式文件,该文件包含 Visual Studio 调试器的 Codeview 格式的调试信息(也可能是其他格式,视 DBG 的创建方式而定)。 当没有某些代码的源(如库或 Windows API)时,DBG 文件允许调试。 DBG 文件还允许执行 OLE RPC 调试。

DBG 文件已经由 PDB 文件替代,PDB 文件现在更常用于调试。

可使用 REBASE.EXE 实用工具从 PE 格式的可执行文件中去除调试信息并将其存储在 DBG 文件中。 PE 文件头中的文件特性字段 IMAGE_FILE_DEBUG_STRIPPED 通知调试器 Codeview 信息已被抽出到单独的 DBG 文件中。

可下载和安装系统 DBG 文件,该文件包含用于调试对 Windows API 的调用的符号。 

当使用 DBG 文件中的符号进行调试时,必须使用完全修饰名。 例如,若要在 Windows sndPlaySound 函数调用上设置断点,必须指定 _sndPlaySoundA@8。

Visual Studio 调试器并不旨在调试受保护模式的核心代码,即使对于 DBG 符号也如此。

对于用户模式的调试,Visual Studio 需要下列文件:

  • 在 Windows 2000 计算机上,\winNT\SYMBOLS\DLL 目录中的 DBG 和 PDB 文件。

  • 在 Windows XP 计算机上,\Windows\SYMBOLS\DLL 目录中的 PDB 文件。

有关 DBG 文件的更多信息,请参见以下知识库文章:Q121366,INFO: PDB and DBG Files - What They Are and How They Work(Q121366,信息:PDB 和 DBG 文件 — 这些文件是什么以及其工作方式)。

可以在 MSDN Library 中查找知识库文章。

安装用于调试系统调用故障的符号

若要调试在调用系统 DLL 或第三方库时出现的故障,通常需要使用系统 .dbg 或 .pdb 文件,这些文件包含表示 Windows DLL、EXE 以及设备驱动程序的符号。 可从若干位置获取这些符号:

  • Visual Studio CD-ROM 包含选择的 Windows 版本的符号文件。

  • OS Support Tools CD-ROM 包含 Windows 2000 和 Windows XP 的符号文件。

  • 可从 http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx 为您的 Windows 版本下载最新符号。

    可以从 Microsoft 公共符号服务器自动下载符号。 有关更多信息,请参见如何:使用符号服务器

  • 第三方供应商可能会提供这些符号。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道格拉斯范朋克

播种花生牛奶自留田

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值