java eclipse 无法在多线程程序的断点后单步执行线程
java eclipse can't step through thread after breakpoint with multithreaded program
我有一个程序有 4 个工作线程在一个方法上运行。如果我在方法中放置一个断点,每个工作线程都会在其上暂停,但是单步执行和单步执行按钮(以及 play/pause/terminate)被禁用,因此我无法遍历执行路径。
我试过使用 suspendVM 而不是挂起线程,而是通过使用条件断点引用 worker1 线程名称来挂起一个线程,但这没有区别,步骤 in/over 按钮被禁用
有人知道如何让它工作吗?当我 运行 只有一个主线程时它工作正常。
好吧,我让它工作了,但不要问我是怎么做到的,我认为它与本机方法有关。如果我的线程在方法旁边(在调用堆栈中)有一个键时挂起,我不能使用步骤按钮,但如果它在调用堆栈中有三个蓝色条,我可以。我得到的似乎是运气,所以我只是重新启动程序,直到我幸运为止。
我发现原因是我的线程被我的代码阻塞了。例如:
pulic void methodA(){
...
methodB()
...
}
public void methodB{
...
while(true){// it can be some other reason to block this thread
Thread.sleep(100);
}
...
}
如果我们在 methodA 中 F6(step over),线程状态将是 "stepping",并且 step in,step over 和 步骤 return 按钮状态被禁用。
我有一个程序有 4 个工作线程在一个方法上运行。如果我在方法中放置一个断点,每个工作线程都会在其上暂停,但是单步执行和单步执行按钮(以及 play/pause/terminate)被禁用,因此我无法遍历执行路径。
我试过使用 suspendVM 而不是挂起线程,而是通过使用条件断点引用 worker1 线程名称来挂起一个线程,但这没有区别,步骤 in/over 按钮被禁用
有人知道如何让它工作吗?当我 运行 只有一个主线程时它工作正常。
好吧,我让它工作了,但不要问我是怎么做到的,我认为它与本机方法有关。如果我的线程在方法旁边(在调用堆栈中)有一个键时挂起,我不能使用步骤按钮,但如果它在调用堆栈中有三个蓝色条,我可以。我得到的似乎是运气,所以我只是重新启动程序,直到我幸运为止。
我发现原因是我的线程被我的代码阻塞了。例如:
pulic void methodA(){
...
methodB()
...
}
public void methodB{
...
while(true){// it can be some other reason to block this thread
Thread.sleep(100);
}
...
}
如果我们在 methodA 中 F6(step over),线程状态将是 "stepping",并且 step in,step over 和 步骤 return 按钮状态被禁用。