如何调试到.NET Framework源代码

Kár*_*árt 6 .net c# debugging

如何使用Visual Studio 2017调试.NET Framework源代码?

关于这个话题,这里有一些关于stackoverflow的问题,但是即使阅读了所有这些问题,我仍然无法使其工作。我认为,提出有关如何调试.NET Framework源代码的最新有效解决方案将很有用。

我想在不使用任何外部工具(例如dotPeek作为源服务器)的情况下解决该问题。

Kár*_*árt 9

首先,我使用Microsoft Visual Studio Enterprise 2017版本15.9.7和通过.NET Framework 4.7.2对其进行了测试。不过,我认为它应该以相同的方式在Community Edition上运行。

采取的步骤:

  1. 转到工具/选项/调试/常规,然后执行以下设置:

    • 选中“ 启用.NET Framework源代码步进”(这将自动禁用“启用我的代码”;否则,请手动执行)
    • 取消选中“ 要求源文件与原始版本完全匹配”
    • 选中启用源服务器支持
  2. 转到工具/选项/调试/符号,然后:

    • 在上方的列表框中,选中“ Microsoft Symbol Servers”
    • 单击“ 空符号缓存”按钮(以确保获得正确的符号)
    • 选择加载所有模块,除非底部的排除单选按钮
  3. 从https://referencesource.microsoft.com/download.html网站下载您的项目面向的.NET Framework版本的源代码。

  4. 将下载的存档(zip)文件解压缩到PC上的便捷路径。

  5. 调试您的应用程序;在要调试的.NET代码行中设置一个断点,并使用调试器转到所需的代码行。

注意:您的应用程序启动可能会变慢,因为它将从Internet下载PDB。

  1. 按单步执行(默认为F11)。如果您的设置正确,这将导致一些延迟(如果VS崩溃(如我的崩溃),请再次清空符号缓存)。最终它将询问给定文件的来源,例如dictionary.cs。这里可能发生两件事:

    • A)在文件对话框中询问源文件(.cs)。转到步骤7。
    • B)表示whatever.cs未找到,并且有一个链接显示为“ 浏览并找到what.cs ... ”。单击该链接。
  2. 选择磁盘上相应的.cs文件(您可以在OS上搜索该文件)。

注意:我不得不重新启动VS几次,直到在查找源时“没有崩溃”为止,这很可能是VS中的错误。

  1. 如果一切正确,您将发现自己正在调试.NET源代码。

注意:由于VS保存了为源文件输入的路径,因此可以停止调试或重新启动VS;否则,您可以停止VS。下次也可以使用。再说,你不必须手动选择框架内的任何多个源文件,因为VS将使用源文件夹您输入,并且将在源文件中有搜索。

  • 一件奇怪的事情是,这仅在调试来自“mscorlib.dll”的代码时才对我起作用,但不适用于来自“System.Core.dll”的代码。有谁知道解决方案吗? (3认同)
  • 值得一提的是,使用 Jetbrains Rider IDE,调试 .NET 框架代码可以完美运行,无需任何设置。 (3认同)