【问题标题】:Debugging System.Threading调试系统.线程
【发布时间】:2019-07-23 15:49:35
【问题描述】:

是否可以调试 System.Threading 库?

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

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

  • 取消选中“仅启用我的代码”
  • 选中“启用 .NET Framework 源代码步进”
  • 选中“启用源服务器支持”
  • 检查符号文件 (.pdb) 位置下的“Microsoft 符号服务器”

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

类似的东西。

是否可以调试 System.Threading 库?我是否缺少任何步骤?

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

【问题讨论】:

  • 我不确定它是否重复。例如,另一个线程上的顶级解决方案要求我转到甚至不包含 System.Threading 的referencesource.microsoft.com。这是专门针对该库的问题。如果不出意外,对此的有效答案可能是“无法调试 System.Threadin”,或者可以使用其他方法来执行此操作。
  • 遵循副本中关于使用符号服务器支持的部分,而不是参考源。 Microsoft Symbol Servers 就是所需要的。如果你还有问题,我会删除重复的。
  • 顺便说一句,它确实包含System.Threadingreferencesource.microsoft.com/#mscorlib/system/threading/…
  • 自我们上次发言以来,我查看了您所做的修改,并重新提出了问题。对于给您带来的不便,我深表歉意。
  • 嗨。这周我无法获得资源来恢复它。我将在星期一回复此更新,如果可行,请接受提供商的回答。谢谢! :)

标签: c# debugging visual-studio-debugging


【解决方案1】:

正常情况:

我们可以尝试升级到最新的.net 4.8 框架,它适用于How to debug System.Web.dll?Unable to step into 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 package

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

3.解压包含源代码的.zip文件并将其移动到我决定保留源代码的位置,然后在VS IDE中=>右键单击解决方案=>属性=> Common Properties => Debug Source Files => New Line(Ctrl-Insert)并输入Source文件夹的路径(解压后的Source文件夹)=>Apply= >好的。

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

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

另外:确保您已满足here 提到的所有要求。您应该禁用require source files to exactly match the original version 选项和Empty the symbol cache 中的Debug=>Options=>Symbols

【讨论】:

  • 感谢您的回复。这周我无法获得资源来恢复它。我将在星期一回复此更新,如果可行,请接受答案。再次感谢! :)
  • @Paagalpan 嗨朋友,这个问题有什么更新吗?你现在可以调试到 System.Threading 吗:)
  • 我刚试过。谢谢,它确实有效!它无法自动找到该文件,但是一旦我将其指向正确的路径,它就能够到达那里。现在的问题是,由于源不匹配,断点命中随机行(在大多数情况下为 cmets),因此无法调试:/
  • 如果你的意思wasn't able to automatically find the file 是我们必须将调试器指向正确的路径,其中 xx.cs 存在,我们必须多次指向它,因为我们将调试到许多 xx.cs文件,我认为我们应该将解决方案的调试源路径设置为source文件夹,然后它可以自动在我的机器中找到文件。对于问题the source doesnt match,我还没有在我的机器上重现这个问题。确保您处于调试模式,并检查在您启用 Debug menu=>Options 中的 Suppress JIT optimization 选项时是否有帮助。
  • @Paagalpan 如果the source doesnt match and has the possibility that cause wrong breakpoint lines 有解决方法,我将尝试与调试产品团队中的某个人确认。但这可能需要一些时间:)
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 2011-01-03
  • 2014-02-18
相关资源
最近更新 更多