【发布时间】:2019-08-06 04:17:11
【问题描述】:
我正在使用我在 Unity 2018.4.2 Windows 项目中构建的 .NET 4.7.1 库并尝试使用加载的符号进行调试。无论我尝试什么,在 Visual Studio 2017 (15.9.12) 中调试时,我都无法为库加载符号。在模块窗口中我的 DLL 旁边出现以下内容:
符号状态:未加载
这是我尝试过的:
- 将库构建为 Debug
- 绝对确保当前 PDB 与当前 DLL 匹配
- 模块>符号设置>将 PDB 目录添加到符号文件位置
- 将 PDB 文件复制到 DLL 旁边的项目中
- 脚本运行时 4.X,API 兼容。 4.X 在 Unity 中
- 调试独立构建和编辑器
- 使用 ILSpy 打开库,调试符号正确加载
- 在 VS 模块窗口中右键单击 DLL 并单击“符号加载信息” - 什么都没有发生
- 在 VS 模块窗口中右键单击 DLL 并单击“加载符号”-
点击Load Symbols时出现如下->
但符号状态仍然是“未加载”
【问题讨论】:
-
使用模块工具窗口 dbl 检查实际加载 DLL 的路径,在大多数情况下,dll 和 pdb 并排放置,VS 调试器拒绝加载 PDB ,您很可能是从其他路径加载 DLL。因此加载一个不匹配的。当链接器创建二进制文件和 pdb 时,它会生成一个 guid 来标记两者。 VS 调试器检查二进制文件中的 guid 以及它尝试加载的任何 pdb。如果它们不匹配,则不会加载。
-
在编辑器模式下,模块 DLL 路径符合预期。构建当然会将这些文件移动到构建目录。如果配置(在播放器设置中),PDB 文件也将被复制(在 DLL 的新路径旁边)。
-
我已在此处将其记录为 Microsoft 的错误:developercommunity.visualstudio.com/content/problem/678520/…
-
我在2020年仍然遇到同样的问题。您解决了这个问题还是放弃了所有希望?
-
我放弃了,很遗憾:(
标签: .net visual-studio unity3d debugging pdb-files