Multithreading 在多线程应用程序中设置断点
如果我为多线程应用程序设置断点,会发生什么情况 它会停止所有的线程,仅仅是中断的线程,还是整个程序只是崩溃 如果可能的话,我会只停止一个线程,还是会把我的应用程序搞砸 如果我不能中断一个多线程应用程序,我可以使用哪些调试技术?它会停止所有线程Multithreading 在多线程应用程序中设置断点,multithreading,breakpoints,Multithreading,Breakpoints,如果我为多线程应用程序设置断点,会发生什么情况 它会停止所有的线程,仅仅是中断的线程,还是整个程序只是崩溃 如果可能的话,我会只停止一个线程,还是会把我的应用程序搞砸 如果我不能中断一个多线程应用程序,我可以使用哪些调试技术?它会停止所有线程 通常不可能只停止一个线程。有关使用GDB调试线程的更多信息,请参阅手册的第页。由于您没有使用特定的语言/平台标记问题,因此我将给出与Java相关的答案 在大多数IDE中,您可以在断点上设置属性,特别是条件属性。因此,如果您知道线程的名称,可以执行以下操作:
通常不可能只停止一个线程。有关使用GDB调试线程的更多信息,请参阅手册的第页。由于您没有使用特定的语言/平台标记问题,因此我将给出与Java相关的答案 在大多数IDE中,您可以在断点上设置属性,特别是条件属性。因此,如果您知道线程的名称,可以执行以下操作:
“ThreadName”.equals(Thread.currentThread().getName())
…以及使用同一类的所有其他线程(您在其中设置断点)将不受阻碍地运行。JAVA:根据个人经验,您可以通过停止所有线程或单个线程来调试多线程应用程序。这很可能取决于您使用的IDE以及您连接到的应用程序,但对我来说,它是:
- Eclipse以调试模式连接到在jpda中运行的Tomcat服务器
- 在代码中放置一个断点,转到Eclipse的调试透视图(有时它会暂停,但不会切换透视图)
- 在“断点”窗口中,您将看到断点列表。您可以右键单击每个对象并在其上设置属性。。。如果要停止一个断点上的所有线程,请单击SuspendVM单选按钮。如果只想停止单个线程,请单击“挂起线程”
如果使用单线程停止选项,我不确定此时您是否能够选择要暂停的线程。在Suspend VM中,您可以查看调试窗格并查看您的线程。。。向下滚动,您可以在线程之间跳转(守护进程线程10与守护进程线程9,诸如此类)您可以重新启动所有线程,或者在某些情况下只重新启动一个线程。在intellij中,您至少还可以选中“仅停止此线程,而不是全部”选项