Xaq*_*ron 240 c# asp.net multithreading breakpoints visual-studio-2010
我有一些项目的解决方案.不同的项目有几个突破点.我想跟踪第一个线程命中其中一个断点并继续跟踪该单个线程,尽管其他线程进入相同的代码块.
我知道这可以通过在断点上定义条件来实现,也就是说,线程名称= ...或者线程ID = ...但我的情况是一个负载很重的ASP.NET应用程序,并且只要我附加到w3wp.exe
许多线程将达到突破点.我需要一些像a ThreadLocal<break-point>
.
可能吗?如果是这样,怎么样?
Mat*_*aus 321
这是我做的:
设置一个条件断点,我知道这个断点只会出现在我正在寻找的线程上.
一旦断点命中并且你在你想要的线程中,在Visual Studio线程窗口中(在调试,调试 - > Windows - >线程时),Ctrl+ A(选择所有线程),然后Ctrl+单击您当前所在的线程.除了要调试的线程之外,您应该拥有所有线程.
现在,Visual Studio将只通过解冻的线程.这样做似乎要慢得多,大概是因为它必须循环遍历所有冻结的线程,但它为我的多线程调试带来了一些理智.
小智 145
冻结/解冻线程是一种不正确的方式,因为其他线程不执行任何代码.
最正确和最有用的方法是:
在Visual Studio 2015及更高版本中,过程类似于:
所以所有线程都被执行,但调试器仅在当前线程上命中.
Erw*_*yer 14
我刚刚发布了一个Visual Studio 2010+扩展,它正是您正在寻找的.它是免费的:).
介绍
此Visual Studio扩展添加了两个快捷方式和工具栏按钮,使开发人员可以在调试多线程应用程序时轻松专注于单个线程.
它大大减少了手动进入"线程"窗口以冻结/解冻所有线程但需要遵循的线程的需要,因此有助于提高生产率.
特征
仅限进一步执行当前线程.将冻结所有其他线程.快捷方式:CTRL + T + T或雪花按钮.切换到下一个单线程(基于ID).将更改当前线程并冻结所有其他线程.快捷方式:CTRL + T + J或下一步按钮.
Mik*_*yer 11
如果正在为Web应用程序生成多个线程,则@MattFaus答案将不起作用.我做的是以下
一个略有不同的做法,我使用:
这假设您有时间在第二个线程到达断点之前执行上述操作.如果没有,其他线程在您完成上述操作之前点击了断点,您可以在线程窗口中右键单击它们并选择冻结.
归档时间: |
|
查看次数: |
80097 次 |
最近记录: |