Java Eclipse 无法使用多线程程序在断点后单步执行线程



我有一个程序,它有4个工作线程操作一个方法。如果我在方法中放置一个断点,每个工作线程将暂停在它上,但步进和步过按钮(以及播放/暂停/终止)是禁用的,所以我不能遍历执行路径。

我已经尝试使用suspendVM,而不仅仅是挂起线程,只是通过使用引用worker1线程名称的条件断点挂起一个线程,但它没有区别,步骤在/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",步进步过步返回按钮状态为禁用

最新更新