.net - 调试时 PDB 给我带来什么以及我如何知道它正在工作?

标签 .net debugging pdb-files

我必须使用没有源代码的第三方组件。我有发布DLL和发布PDB文件。我们将其称为“CorporateComponent.dll”。我自己的代码从这个 DLL 创建对象并调用这些对象的方法。

CorpObject o = new CorpObject();
Int32 result = o.DoSomethingLousy();

调试时,方法“DoSomethingLousy”抛出异常。 PDB 文件对我有什么作用?如果它有好处,我如何确定我正在使用它?

最佳答案

要确认您是否正在使用提供的 PDB CorporateComponent.pdb,请在 Visual Studio IDE 中进行调试期间查看输出窗口并找到指示 CorporateComponent.dll 已加载且后跟字符串 Symbols 的行已加载

以我的一个项目为例:

The thread 0x6a0 has exited with code 0 (0x0).
The thread 0x1f78 has exited with code 0 (0x0).
'AvayaConfigurationService.vshost.exe' (Managed): Loaded 'C:\Development\Src\trunk\ntity\AvayaConfigurationService\AvayaConfigurationService\bin\Debug  \AvayaConfigurationService.exe', Symbols loaded.
'AvayaConfigurationService.vshost.exe' (Managed): Loaded 'C:\Development\Src\trunk\ntity\AvayaConfigurationService\AvayaConfigurationService\bin\Debug\IPOConfigService.dll', No symbols loaded.

Loaded 'C:\Development\src...\bin\Debug\AvayaConfigurationService.exe', Symbols loaded.

这表明 IDE 调试器已找到并加载 PDB。

正如其他人所指出的,在检查应用程序中的堆栈帧时,您应该能够看到 CorporateComponent.pdb 中的符号。如果您不这样做,那么第三方可能没有在发布的 PDB 版本中包含符号信息。

关于.net - 调试时 PDB 给我带来什么以及我如何知道它正在工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52600/

相关文章:

c# - 如何访问嵌套命名空间以避免在 .NET 中完全限定

.net - 识别格式错误的 URL 的来源

c++ - 如何在我的二进制文件中包含调试信息?

visual-c++ - 如何使用符号在 Release模式下构建 OpenSSL?

asp.net - 缓存 LINQ-SQL 对象和 DataContext 线程安全

.net - 有什么资源可以帮助您了解 .NET 泛型集合的实现细节?

javascript - 从 chrome 中删除所有断点

android - ADB 未检测到 ZTE V9

c# - 立即窗口中的 F#

visual-studio - 任何推荐的 VC++ 设置,以便更好地对发布版本进行 PDB 分析