首页 > 解决方案 > 调试系统.线程

问题描述

是否可以调试 System.Threading 库?

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

在此处输入图像描述

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

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

像这样的东西。 在此处输入图像描述

是否可以调试 System.Threading 库?我错过了任何步骤吗?

编辑:我不确定它是否重复。例如,另一个线程上的顶级解决方案要求我访问甚至不包含 System.Threading 的 referencesource.microsoft.com。这是专门针对该库的问题。如果不出意外,对此的有效答案可能是“无法调试 System.Threadin”,或者可以使用其他方法来执行此操作

标签: c#debuggingvisual-studio-debugging

解决方案


正常情况:

我们可以尝试升级到最新的 .net 4.8 框架,它适用于类似这两个类似问题的一些情况如何调试 System.Web.dll?并且无法进入 PresentationFramework

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

但是对于这个:

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

我们在调试.net框架源代码时,除了源服务器,还会尝试在本地目录中查找源代码。所以我们可以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 包

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

3.解压缩包含源代码的.zip文件并将其移动到我决定保留源代码的位置,然后在VS IDE =>右键单击解决方案=>属性=>通用属性=>调试源文件=>新建行(Ctrl-Insert)并输入文件夹的路径(解压缩文件夹中的源文件夹)=>应用=>确定。

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

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

此外:确保您已满足此处提到的所有要求。您应该禁用require source files to exactly match the original version选项并Empty the symbol cacheDebug=>Options=>Symbols.


推荐阅读