在 eclipse 中调试多个线程
2022-08-31 14:49:27
在我正在调试的方法中,我正在生成一个新线程。我需要调试此新线程的执行,而不是父线程。如何在日食中执行此操作?
在我正在调试的方法中,我正在生成一个新线程。我需要调试此新线程的执行,而不是父线程。如何在日食中执行此操作?
除了Shamit Verma的回答:
在调试多线程 Java 应用程序时,最好不要使用仅挂起设置断点的线程的标准断点。在应用程序中定义标准断点只会中断相关线程。其他线程仍将运行。在 eclipse 中,由于某种原因,如果其他线程已启动,则会导致调试器跳过断点。
用于调试 Java 的解决方案:
在所需的线程(@ Run()方法中定义一个断点,我期望..),右键单击断点 ->断点属性。
在“断点属性”对话框中,勾选“挂起 VM”而不是“挂起线程”。
如果这样做,则在达到断点时,整个 VM 将被挂起。
在 C/C++ CDT 中,对 以下位置使用设置调度程序锁定:
正如@Employed俄语在回答其他问题时所说的那样,GDB命令:
set scheduler-locking on
将导致其他 C/C++ 线程保持挂起状态,同时允许当前线程单步执行。此命令可以在 Eclipse/CDT Debug 中执行,方法是暂停程序执行并打开“调试器控制台”透视图,然后键入:在 It 上设置调度程序锁定,稍后可以使用以下方式恢复正常:设置调度程序锁定关闭
有关调度程序锁定和不间断模式的更多信息,请参阅 GDB 文档,该模式允许其他线程在停止单个线程的同时运行。
在新线程的“run”方法上放置一个断点。一旦线程启动,这将停止执行。