调试多线程c#代码:是否可以分成一个线程并保持其他线程运行?

时间:2014-02-27 18:23:28

标签: c# multithreading visual-studio debugging

我喜欢Java中的功能,您可以在其中暂停一个线程并保持其他线程运行。特别是在Netbeans中,Debugging窗口中的每个线程旁边都有一个暂停按钮。单击该按钮可暂停(中断)该特定线程。然后,您可以调试并单步执行代码。但所有其他线程都不受干扰地运行。

如果您有与外界通信的线程(硬件,网络等),这将特别有用。你不想打扰他们,所以另一方没有超时。

这在Visual Studio中是否也可以(例如2013)?到目前为止,在我看来,当我暂停程序(或一个断点被击中)时,所有线程都被停止,并且在调试该单个线程的代码时无法让某些线程运行。

我知道有一个冻结函数,它停止一个线程,而其他线程继续运行。虽然有用,但它远不是一回事。因为我不能单步执行该线程或检查一些变量。当我点击“Break All”时,我才能这样做。但这将阻止所有线程。我可能只是错过了什么?

1 个答案:

答案 0 :(得分:1)

这就是我的所作所为:

  1. 设置一个我知道只会点击的条件断点 我正在寻找的主题。
  2. 一旦断点点击,你就在你想要的线程中,在 Visual Studio Threads窗口(调试时,Debug - > Windows - > 线程),Ctrl + A(选择所有线程),然后按Ctrl +单击 你当前的主题。你应该拥有所有线程除外 你要调试的那个。
  3. 右键单击,然后选择“冻结”。
  4. 现在,Visual Studio将只通过解冻的线程。这样做似乎要慢得多,大概是因为它必须遍历所有冻结的线程,但它为我的多线程调试带来了一些理智。