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

21
在商业应用程序中重新分发pdb文件明智吗?
有时,我使用堆栈跟踪来获取已部署应用程序的更详细的错误报告日志;是否可以在不依赖这些文件的情况下实现此功能?
另外,这些文件包含多少原始源代码的提示?使用它是否更容易进行逆向工程来破解我的应用程序?

如果您能指定使用的环境,那将会很有帮助。许多开发工具都会输出PDB文件。 - Yes - that Jake.
5个回答

13

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

  • 所有非公共类型、接口、结构和类
  • 函数中的局部变量
  • 相关代码文件的源文件名和相应源代码中的行号。

这些组合使得本机代码的反向工程非常容易。

幸运的是,您可以使用 /PDBSTRIPPED 参数创建仅包含公共信息的 PDB 文件的精简版本。

哦,你编辑后添加了C#/.NET,所以我不确定"PDBSTRIPPED"是否适用。不过即使没有任何符号信息,.NET应用程序也很容易反向工程。 我不介意在.NET项目中包含它们。


4
托管的.pdb文件包含以下信息:
  • 所有本地变量的名称
  • 所有源代码文件的名称以及IL指令映射到这些文件中的行。

其他所有内容都包含在二进制文件本身中,包括所有类型、成员和函数参数的名称。

来源:PDB文件:每个开发人员必须了解的内容


3
你可以尝试使用dia2dump查看内容。

2

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

我不这么认为。注释不在pdb文件中,也无法从pdb生成1:1的副本而没有源文件。 - ActiveX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接