我有一个程序有 4 个工作线程在一个方法上运行。如果我在方法中放置一个断点,每个工作线程都会在其上暂停,但是单步执行和单步执行按钮(以及播放/暂停/终止)被禁用,因此我无法通过执行路径。
我尝试过使用suspendVM,而不仅仅是挂起线程并仅通过使用引用worker1线程名称的条件断点来挂起一个线程,但这没有区别,步入/结束按钮被禁用
有人知道如何让它工作吗?当我只运行一个主线程时它工作正常。
我有一个程序有 4 个工作线程在一个方法上运行。如果我在方法中放置一个断点,每个工作线程都会在其上暂停,但是单步执行和单步执行按钮(以及播放/暂停/终止)被禁用,因此我无法通过执行路径。
我尝试过使用suspendVM,而不仅仅是挂起线程并仅通过使用引用worker1线程名称的条件断点来挂起一个线程,但这没有区别,步入/结束按钮被禁用
有人知道如何让它工作吗?当我只运行一个主线程时它工作正常。
好吧,我让它工作了,但不要问我如何,我认为它与本机方法有关。如果我的线程在方法旁边有一个键(在调用堆栈中)时暂停,我不能使用步骤按钮,但如果它在调用堆栈中的三个蓝条我可以。我得到的似乎是运气,所以我只是重新启动程序,直到我幸运为止。
我发现原因是我的线程被我的代码阻塞了。例如:
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和step return按钮状态被禁用。