调试 System.Threading

Debugging System.Threading

是否可以调试 System.Threading 库?

我有一个看起来有点像这样的堆栈跟踪:

我已经按照我能看到的有关如何调试 .NET 库的所有步骤进行操作。

然而,当我尝试调试 System.threadin 调用时,我收到一个文件未找到页面,要求我浏览并查找 .cs 文件。

像这样。

是否可以调试 System.Threading 库?我是否遗漏了任何步骤?

编辑: 我不确定它是否重复。例如,另一个线程上的顶级解决方案要求我转到 referencesource.microsoft.com,它甚至不包含 System.Threading。这是专门针对该图书馆的问题。如果不出意外,对此的有效答案可能是 'It is not possible to debug System.Threadin' 或者有可能但使用其他方法来做到这一点

正常情况:

我们可以尝试升级到最新的 .net 4.8 框架,它适用于某些情况,例如这两个类似的问题 and

因为我们应该确保 https://referencesource.microsoft.com/ 包含我们正在调试的确切版本,所以大多数时候最好选择最新版本。

但是对于这个:

因为升级到 .net 4.8 似乎没有解决这个问题(也许我在这个过程中做错了什么?)。我选择了另一个方向(using local source)但它在我身边有效。

我们在调试.net framework源码的时候,除了源码服务器外,还会尝试去本地目录找源码。所以我们可以在我们的机器上下载 source code .zip 文件和 configure the Source File settings for solution.

1.去https://referencesource.microsoft.com/点击右上角的下载按钮

2。将 .NET Framework 的完整源代码下载为 .zip 文件。由于我的项目目标是.net framework 4.8,所以我下载了.net 4.8 package.

(我们只需要下载对应自己项目的相应包即可,不需要全部下载)

3.解压缩包含源代码的 .zip 文件并将其移动到我决定保留源代码的位置,然后在 VS IDE=> Right-click solution => Properties => Common Properties => Debug Source Files => New Line(Ctrl-Insert) 并输入 Source 文件夹的路径(Source解压文件夹中的文件夹)=>Apply=>OK.

对于我来说,我把解压后的DotNet48RTM文件夹放在Documents文件夹中,所以我在Debug Source Files设置中输入的路径是C:\Users\xxx\Documents\DotNet48RTM\Source

然后我可以在 运行 重建后进入 System.Threading 库。

此外:确保您已满足上述所有要求here。您应该在 Debug=>Options=>Symbols.

中禁用 require source files to exactly match the original version 选项和 Empty the symbol cache