0

我有一个程序有 4 个工作线程在一个方法上运行。如果我在方法中放置一个断点,每个工作线程都会在其上暂停,但是单步执行和单步执行按钮(以及播放/暂停/终止)被禁用,因此我无法通过执行路径。

我尝试过使用suspendVM,而不仅仅是挂起线程并仅通过使用引用worker1线程名称的条件断点来挂起一个线程,但这没有区别,步入/结束按钮被禁用

有人知道如何让它工作吗?当我只运行一个主线程时它工作正常。

4

2 回答 2

0

好吧,我让它工作了,但不要问我如何,我认为它与本机方法有关。如果我的线程在方法旁边有一个键(在调用堆栈中)时暂停,我不能使用步骤按钮,但如果它在调用堆栈中的三个蓝条我可以。我得到的似乎是运气,所以我只是重新启动程序,直到我幸运为止。

于 2015-09-10T02:05:53.260 回答
0

我发现原因是我的线程被我的代码阻塞了。例如:

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 instep overstep return按钮状态被禁用。

于 2016-03-20T07:57:20.507 回答