断点多线程应用程序

时间:2011-04-28 12:11:41

标签: multithreading breakpoints

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

它是否会停止所有线程,只是那个突破的线程或者整个程序崩溃了吗?

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

如果我无法突破多道处理应用程序,我可以使用哪些调试技术?

3 个答案:

答案 0 :(得分:6)

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

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

  • 在断点窗口中,您将看到断点列表。您可以右键单击并设置属性...如果要在一个断点上停止所有线程,请单击“暂停VM”单选按钮。如果您只想停止单个线程,请单击suspend thread。

如果使用单线程停止选项,我不确定您是否能够选择要暂停的线程。在Suspend VM中,您可以查看Debug窗格并查看您的线程...向下滚动,您可以在线程之间跳转(守护程序线程10与守护程序线程9,类似的东西)

答案 1 :(得分:1)

它会停止所有线程。

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

答案 2 :(得分:0)

由于您没有使用特定语言/平台标记您的问题,我将提供与Java相关的答案。

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

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

...和所有其他使用相同类的线程(设置断点的地方)将不受阻碍地进行。