一尘不染

如何在Visual Studio中调试单个线程?

c#

我有一些项目的解决方案。不同项目中有几个断点。我想跟踪第一个遇到这些断点的线程,并继续跟踪该单个线程,尽管其他线程进入了相同的代码块。

我知道可以通过在断点上定义一个条件来实现,即线程名称= …或线程ID =
…,但是我的情况是负载很重的ASP.NET应用程序,并且一旦附加到w3wp.exe许多线程将达到断点。我需要一些东西ThreadLocal<break- point>

可能吗?如果是这样,怎么办?


阅读 1090

收藏
2020-05-19

共1个答案

一尘不染

冻结/解冻线程是一种不正确的方法,因为其他线程不会执行任何代码。

最正确和可用的方法是:

  1. 在断点窗口中按Ctrl + A(选择所有断点)。
  2. 右键单击并选择“过滤器…”。
  3. 输入“ ThreadId =(当前线程ID)”。

Visual Studio 2015 及更高版本中,过程类似:

  1. 在断点窗口中按Ctrl + A(选择所有断点)。
  2. 右键单击并选择“设置…”。
  3. 检查“条件”,然后在下拉列表中选择“过滤器”
  4. 输入“ ThreadId =(当前线程ID)”。

因此,所有线程均被执行,但是调试器仅命中当前线程。

2020-05-19