我有一个项目,在其他 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/