C# 如何在调试器当前所在的位置停止调试器?

C# 如何在调试器当前所在的位置停止调试器?,c#,multithreading,C#,Multithreading,Visual Studio 2010 要在调试器当前所在的位置停止调试器,我通常使用Debug菜单中的breakall 然而,现在我使用多线程,这确实显示了代码中的一个位置,它表示当任务返回到线程a时,线程a将在这里执行 然而,现在另一个线程在某处被冻结,我想访问当前正在运行的线程。我该怎么做?要知道活动线程以及它所执行的代码的最后一行?您是否尝试过调试>窗口>线程 它将显示当前执行的线程(任务实际正在等待的位置)以及正在运行的其他工作线程。您可以双击要访问其调用堆栈的线程,然后查看其被阻止的原

Visual Studio 2010

要在调试器当前所在的位置停止调试器,我通常使用
Debug
菜单中的
breakall

然而,现在我使用多线程,这确实显示了代码中的一个位置,它表示当任务返回到线程a时,线程a将在这里执行


然而,现在另一个线程在某处被冻结,我想访问当前正在运行的线程。我该怎么做?要知道活动线程以及它所执行的代码的最后一行?

您是否尝试过调试>窗口>线程


它将显示当前执行的线程(任务实际正在等待的位置)以及正在运行的其他工作线程。您可以双击要访问其调用堆栈的线程,然后查看其被阻止的原因。

您只需使用“线程”窗口。调试>窗口>线程。然后你只需点击你感兴趣的线程

我使用一个VisualStudio插件来冻结所有其他线程,因此当我逐步完成代码时,它不会在线程之间跳转

Ctrl+S,D在VS 2010中打开
并行堆栈
窗口

其他版本具有类似的功能:

进一步阅读:

您使用的是哪个版本的studio?好了。。。。我已经拿到了体育精神徽章,你看起来应该得到几分,你以11秒的优势击败了我。多亏了这两个人的回答!也许我理解错了,但它告诉我执行的线程是一个,当我去那里时,有一条绿线说:“这是下一个要执行的语句,当这个线程从当前函数返回时。”因此,也许我错误地理解了我的问题。我需要找到它为什么停止了?@Jeremythonpson:哈哈,谢谢:)事实上,我只需要50分就可以在将来发表评论了@CherrysaHerrim:线程调试总是最糟糕的。这就是我目前正在做的,所以我和你一样痛苦。您是对的,您应该尝试定位将控制权交给另一个线程的位置,这样您就知道如何找到解决方案。这是GUI问题吗?你在等待一项任务完成吗?顺便说一句,一旦您看到所有显示的线程(在您打开的线程窗口中),您将首先位于等待线程中。。。但是这个对你来说不太有趣。其他工作线程列表中还有什么?正在处理吗?@CherrysaHerrim当您看到绿色高亮显示的行时,只需在其下一行放置一个断点,按F5键,当代码返回到该线程(或堆栈中的调用)时,代码将在断点处停止。当代码控件(黄色突出显示)返回到您感兴趣的调试线程时,单击按钮冻结除我正在处理的线程之外的所有线程-该按钮在我在回答中提到的插件中可用。Cheers它当然是一个优秀的插件!查看它的源代码,这是一个很好的例子,适合任何想编写自己的调试器扩展的人