c# - 调试系统.线程
问题描述
是否可以调试 System.Threading 库?
我有一个看起来有点像这样的堆栈跟踪:
我已经按照我能看到的关于如何调试 .NET 库的所有步骤进行操作。
- 取消选中“仅启用我的代码”
- 选中“启用 .NET Framework 源单步执行”
- 选中“启用源服务器支持”
- 检查符号文件 (.pdb) 位置下的“Microsoft 符号服务器”
然而,当我尝试调试 System.threadin 调用时,我得到一个找不到文件的页面,要求我浏览并查找 .cs 文件。
是否可以调试 System.Threading 库?我错过了任何步骤吗?
编辑:我不确定它是否重复。例如,另一个线程上的顶级解决方案要求我访问甚至不包含 System.Threading 的 referencesource.microsoft.com。这是专门针对该库的问题。如果不出意外,对此的有效答案可能是“无法调试 System.Threadin”,或者可以使用其他方法来执行此操作
解决方案
正常情况:
我们可以尝试升级到最新的 .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 cache
在Debug=>Options=>Symbols
.
推荐阅读
- javascript - 无法使用 Node.js Express 设置 cookie
- flutter - 断言失败:第 4973 行第 16 行:'孩子是!父数据元素
':不正确 - machine-learning - 如何提高分类变量的多类随机森林分类器的准确性?
- java - java util日志消息文件未在用户目录中生成
- reactjs - TypeScript 两个不同的事件处理程序调用相同的函数,但不应该
- c++ - CMake ASAN没有链接pthread
- java - EntityManager 为 null 甚至添加了 springDataJpa 依赖后
- javascript - 为什么 Moment 给我今天的日期而不是格式化我的日期?
- android - 如何删除 mInterstitialAd 参数并仅设置标题
- firebase - 在 React Native 中使用来自 Firebase 实时数据库的数据填充 Picker 项