.net - pdb 文件实际上是做什么的?

标签 .net debugging symbols

好的,我意识到 PDB 文件是 .NET 程序集的符号文件。但我从未真正研究过它们的扩展用法。

如果我从加载了运行代码的 Visual Studio 中连接远程调试器,我真的需要远程机器上的 PDB 文件吗?

我会在没有 PDB 文件和连接源代码的调试器的情况下在运行代码的机器上获得未处理的异常信息吗?

他们还做什么?

最佳答案

如果在远程调试情况下远程机器上需要 PDB,我不记得,但除其他外,PDB 包含源代码行号到编译的代码偏移映射。您不能仅使用托管程序集单步执行源代码。

由于托管程序集确实保留了原始源代码中的大量文本符号名称,因此您可以在没有 PDB 的情况下使用调试器在托管可执行文件中四处寻找,但您只能看到类型名称和公共(public)符号 - 您不会请参阅本地符号的名称,因为在运行时不需要将它们绑定(bind)到 .NET 程序集或将 IL 即时传递到 native 代码。

未处理的异常通知与 PDB 是否存在无关。如果调试器附加到进程,无论是否远程,调试器将首先破解异常。

关于.net - pdb 文件实际上是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268507/

相关文章:

.net - .NET 中的有序集合和无序集合有什么区别

c# - System.Threading 休眠功能有帮助吗? (C#)

eclipse - 在调试器中选择 "Step Into"的方法

java - 找不到变量类型字符的符号位置

.net - 如何判断表单是否是通过 ShowDialog 显示的?

c# - List<> 和 IEnumerable<> 开放类型的关系

c++ - Pyclewn 中的标准输入/输出(vim 的 GDB 前端)

c - Visual Studio : structures: error C2440

android - 上标任何字符符号代码?

ruby - to_s 和 to_sym 不工作