master2012

导航

pdb 文件

.PDB文件,全称为“程序数据库”文件。我们使用它(更确切的说是看到它被应用)大多数场景是调试应用程序。目前我们对.PDB文件的普遍认知是它存储了被编译文件的调试信息,作为符号文件存在。那么,它具体包含哪些内容呢?在调试过程中是怎样发挥作用的呢?我们有没有办法去操作这个文件呢?

1. PDB文件内容

.PDB文件的内部格式,微软并没有公开,现在仍然是一个秘密,但是它提供了相关的API用于调试器来从中获取信息。

一个非托管C++程序的PDB文件包含如下信息:

  • l Public, private,和static函数地址
  • l 全局变量的名称和地址
  • l 参数和局部变量的名称及它们在栈中的偏移量
  • l 类型定义,包括class, structure,和 data definitions
  • l FPO(Frame Pointer Omission,帧指针省略)数据
  • l 源文件名称和行号

说明:

从XP SP2起就不再启用FPO。

对于.NET PDB文件,只包含上面说到的两种信息:

  • l 源文件名称和行号
  • l 局部变量名称

.NET PDB文件包含如此少的信息,原因在于其他信息我们可以从元数据中获取,所以也就没有必要重复存储了。

posted on 2013-06-06 20:26  master2012  阅读(205)  评论(0)    收藏  举报