2011-04-28 115 views
7

如果我断点多线程应用程序,会发生什么情况。断点多线程应用程序

它会停止所有的线程,只是一个断点指向或整个程序崩溃?

如果有可能我只想停止一个线程,或者这会弄乱我的应用程序?

如果我不能断点多胎面应用程序什么是我可用的调试技术?

回答

1

它停止所有线程。

通常不可能停止一个线程。有关使用GDB调试线程的更多信息,请参阅本手册的this part

+0

它会重新启动所有线程if我继续 ? – Skeith 2011-04-28 12:14:49

+0

在某些情况下,您可以重新启动所有线程,或者只是一个线程。 – James 2011-04-28 12:15:18

0

既然你没有用特定的语言/平台标记你的问题,我会给出一个Java相关的答案。

在大多数IDE中,您可以在断点上设置属性,特别是条件属性。所以,如果你知道你的线程的名称,你可以做这样的事情:

"ThreadName".equals(Thread.currentThread().getName())

...并利用同一类(在其中设置断点)所有其他线程将继续畅通无阻。

+0

在intellij中,至少,你也可以检查选项“只停止这个线程,而不是所有” – yshavit 2012-03-15 16:10:15

6

JAVA:就个人经验而言,您可以通过停止所有线程或单个线程来调试多线程应用程序。这很可能会取决于您所使用的IDE,并且要连接到什么应用程序,但对我来说它:

  • Eclipse在调试模式连接到Tomcat服务器JPDA运行
  • 放置一个断点在代码中,转到Eclipse的调试视角(有时会暂停但不切换透视图)

  • 在断点窗口中,您将看到一个断点列表。每一个你可以右键单击并设置属性...如果你想停止一个断点上的所有线程,点击Suspend VM单选按钮。如果您只想停止单个线程,请单击挂起线程。

我不确定您现在能否选择使用单线程停止选项时要暂停的线程。在挂起虚拟机,你可以看看调试窗格,并看到你的线程...向下滚动,你可以在线程之间跳转(守护线程10 vs守护线程9,类似的东西)