c# - 某些项目无法加载 PDB 文件

标签 c# debugging pdb-files

我有一个项目,在其他 dll 中多次引用我自己的代码。当我运行网站时,其中一个 dll 会加载其 pdb 文件,而另一个则不会。

从输出中我看到:

LOTS_OF_TEXT\Shared.BusinessLayer.DLL'
LOTS_OF_TEXT\Shared.Visual.Utilities.DLL', Symbols loaded.

我仔细检查了一下,它们在“LOTS_OF_TEXT”位置都有相应的 pdb 文件...但其中一个加载了符号(并允许调试),但另一个则不然。

为什么?如何让 Shared.BusinessLayer.DLL 加载符号以便调试它?

编辑
作为引用,我让 Belvedere 在 pdb 文件发生更改时将其复制到 /AppData/Local/Temp/SymbolCache...这是我的调试设置告诉 Visual Studio 查找符号的位置。

最佳答案

启动 vsvars cmd 提示符(或 powershell)并浏览到 LOTS_OF_TEXT 文件夹。 Visual Studio 附带了一个名为“dumpbin.exe”的工具,可让您检查 .dll 或 .exe 的结构。要查找调试符号,请在 cmd 提示符下输入 dumpbin/headers Shared.BusinessLayer.DLL 运行 dumpin,您应该会在 dll 的 header 信息中看到符号路径 if 它实际上是用符号构建的。只要符号存在或位于搜索路径上,就应该加载它们。

话虽这么说,请检查 Visual Studio 是否设置为加载所有符号,方法是转到“工具”->“选项”->“调试”->“符号”,并确保“自动加载符号:”单选按钮设置为“所有模块,除非排除”,并且排除列表不包含任何相关图像。

关于c# - 某些项目无法加载 PDB 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9898592/

相关文章:

C# - 设置 pdb 的路径

c# - 如何通过restful api传入部分对象(json)

c# - 如何在 c# 中覆盖或创建括号 "[]"的自定义行为?

C++ - 添加列表 <Task> l(或任何 STL 容器)作为数据成员导致错误,当删除分配在堆上的任务数组时

debugging - 如何在附加 gdb 的情况下运行 R 脚本?

c++ - 来自不同版本的 Visual Studio 的 PDB 文件

c# - ICustomMarshaler 变长数组

c# - 如何从具有不同内容的单个 Android 应用程序创建多个应用程序

java - 扩展 Eclipse JDT

c# - 将 NuGet .pdb 复制到输出目录