【问题标题】:What do the pdb files actually do?pdb 文件实际上是做什么的?
【发布时间】:2011-03-17 03:49:54
【问题描述】:
好的,我意识到 PDB 文件是 .NET 程序集的符号文件。但我从未真正研究过它们的扩展用法。
如果我从加载了运行代码的 Visual Studio 中连接远程调试器,我真的需要远程计算机上的 PDB 文件吗?
在没有 PDB 文件和连接源代码的调试器的情况下,我会在运行代码的机器上获得未处理的异常信息吗?
他们还做什么?
【问题讨论】:
标签:
.net
debugging
symbols
【解决方案1】:
我不记得在远程调试情况下是否需要 PDB 在远程机器上,但除其他外,PDB 包含源代码行号到编译的代码偏移映射。您不能仅使用托管程序集单步执行源代码。
由于托管程序集确实保留了原始源代码中的大量文本符号名称,因此您可以在没有 PDB 的情况下使用调试器在托管可执行文件中四处寻找,但您只能看到类型名称和公共符号 -您将看不到本地符号的名称,因为在运行时不需要将它们绑定到 .NET 程序集或将 IL 即时化到本机代码。
未处理的异常通知与 PDB 是否存在无关。如果调试器附加到进程,无论是否远程,调试器将首先破解异常。
【解决方案2】:
远程机器上不需要 pdb。调试器本身必须能够找到它,而不是远程代理。