pdb文件包含多少信息?(C#/.NET)

pdb文件包含多少信息?(C#/.NET),.net,debugging,symbols,pdb-files,.net,Debugging,Symbols,Pdb Files,将pdb文件与商业应用程序一起重新分发是否明智 偶尔,我会使用堆栈跟踪从部署的应用程序获取更详细的错误报告日志;不依赖这些文件是否可以实现此功能 此外,这些文件包含多少原始源代码的提示?使用它对我的应用程序进行反向工程会更容易吗?它基本上添加了以下信息: 所有非公共类型、接口、结构、类 函数中的局部变量 相关代码的源文件名和源代码中相应的行号 所有这些结合起来,使得本机代码的逆向工程非常容易 幸运的是,您可以创建PDB文件的精简版本,其中只包含带有参数的公共信息 哦,您编辑添加了C#/.NE

将pdb文件与商业应用程序一起重新分发是否明智

偶尔,我会使用堆栈跟踪从部署的应用程序获取更详细的错误报告日志;不依赖这些文件是否可以实现此功能


此外,这些文件包含多少原始源代码的提示?使用它对我的应用程序进行反向工程会更容易吗?

它基本上添加了以下信息:

  • 所有非公共类型、接口、结构、类
  • 函数中的局部变量
  • 相关代码的源文件名和源代码中相应的行号
所有这些结合起来,使得本机代码的逆向工程非常容易

幸运的是,您可以创建PDB文件的精简版本,其中只包含带有参数的公共信息


哦,您编辑添加了C#/.NET,所以我不确定“PDBSTRIPPED”是否适用。然而,即使没有任何符号信息,也很容易创建.NET应用程序。我不介意将它们包含在.NET项目中。

您可以尝试使用查看内容。

托管的.pdb文件包含以下信息:

  • 所有局部变量的名称
  • 所有源代码文件的名称以及从IL指令到这些文件中的行的映射
其他所有内容都包含在二进制文件本身中,包括所有类型、成员和函数参数的名称


来源:。

PDB文件还包括源文件的所有注释。因此,使用EXE和PDB文件,可以从原始源代码生成1:1副本。

较新的.Net编译器版本可以在PDB文件中嵌入带有所有注释的完整源代码

免费JetBrains dotPeek反编译器使用此Blob显示反编译的代码。检查程序集->元数据->便携式PDB元数据->自定义调试信息->种类:guid 0003 0E8A571B-6926-466E-B4AD-8AB04611F5FE(嵌入式源代码)

这里记录了这一点:

如果您指定要使用的环境,这将有所帮助。许多开发工具输出PDB文件。