gpt4 book ai didi

c# - 如何调试(进入)我的项目中引用的类库并具有 .pdb 和源代码?

转载 作者:可可西里 更新时间:2023-11-01 03:09:03 25 4
gpt4 key购买 nike

在 Visual Studio (2015) 中调试打开的解决方案/项目时,我想调试(进入)位于引用程序集之一的方法调用。该程序集具有 .pdb(复制到本地)和源代码。该程序集实际上也是我的类库项目,但不在当前解决方案中,而是在其他解决方案中。

我知道调试此程序集的简单解决方案是将其项目添加到当前解决方案而不是引用它,然后调试体验将是无缝的。但是由于某些原因,这对我来说效率不是很高,例如,我应该添加许多 程序集(数十个),但我不想以一个巨大的解决方案结束。

到目前为止我做过/尝试过的事情:

  • 我没有选中仅我的代码
  • 我已检查其他程序集的 .pdb 是否已复制到我当前项目的输出文件夹中。
  • 尝试在调用之前设置一个断点,然后进入。没有成功,调用刚刚被越过
  • 我想调试的程序集以 NuGet 包的形式出现(不是简单的浏览引用)。仍然如此,这是我的类库项目,带有 .pdb,源代码在我的本地磁盘中可用。
  • 查看了 Window->Debug->Modules:符号状态:符号已加载。用户代码:不适用。 Symbol File 位置是一个Temp Asp Files。 (这是一个 ASP.NET MVC 应用程序)
  • 因为它来自 NuGet 包,所以它的构建是一个发布构建,但目前没有优化,并且最新的 .pdb

我记得这个调试功能有时会令人惊讶地自动运行,但现在不会了。

我错过了什么?

最佳答案

出现这种经历的最常见原因是:

  1. 启用“仅我的代码”(工具->选项->调试)
  2. 不匹配的 PDB
  3. 来源不匹配

您已经排除了 1 个,所以要检查其他 2 个:

打开 Debug->Windows->Modules 并找到您遇到问题的程序集。确保它是从您期望的位置加载的,具有您期望的版本,检查是否加载了 PDB。您可能需要尝试加载/重新加载 PDB 以查看 VS 是否对它找到的 PDB 感到满意。

如果 PDB 匹配,VS 应该开始询问源位置。有关源的信息是 PDB 的一部分,因此它会让您知道源是否匹配(可以选择允许加载不匹配的源文件,但您会获得有趣的调试体验)。

请注意,如果您为 RELEASE 构建库,它将被优化,并且对于某些功能,由于 JIT 时间的内联或死代码的编译时间优化(如 if ( false) 分支)。为获得最佳体验,请确保将 DEBUG 程序集与匹配的 PDB 一起使用,并确保在调试器选项中尽早附加“抑制加载优化”。

关于c# - 如何调试(进入)我的项目中引用的类库并具有 .pdb 和源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com