Bob*_*r02 9 multithreading breakpoints intellij-idea
我试图使用断点运行以下代码,如下所示:
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Starting"); //breakpoint here
}
}).start();
int i = 10;
i++; //breakpoint here
Run Code Online (Sandbox Code Playgroud)
当这个代码只运行i ++断点时...如果我删除那个,那么另一个线程的断点将被正确命中.为什么会出现这种奇怪的行为?
这在http://www.jetbrains.com/idea/webhelp/breakpoints-2.html中有记录:
在某些情况下,IntelliJ IDEA不会在断点处停止.请考虑以下情况:在类的不同方法中设置两个断点,并将挂起策略设置为All.当其中一个断点被击中时,执行一些步骤操作.如果在步进另一个线程遇到第二个断点时,IntelliJ IDEA将不会停在那里.
我复制了你的代码示例并重新创建了这种情况.果然,就像它在文档中说的那样,在i++断点处停止后,如果我按下F8(跳过),程序就不会停在另一个断点上.但是如果我按下F9(恢复),程序会在另一个断点上再次停止.
我刚刚遇到了这个问题,为了其他遇到这个问题的人,这里是这种行为的原因以及如何改变它。
正如多伦指出的那样,有相关的文件。然而,需要注意的重要一点是,默认情况下,当到达断点时,JVM 中的所有线程都会挂起。
您所期望的(也是我所期望的)是只有带有断点的线程被挂起。
这不是你想要的,也不是我想要的。
更改此行为(并提供所需的行为)。
1) 通过左键单击边距创建断点。
2) 按 ctrl+shift+F8(调出断点菜单)。
3) 选择断点。您将看到它的选项。
4) 确保选中“挂起”并选择“线程”单选选项。
5) 单击“设为默认”按钮。
现在,当您运行时,您将看到不同线程中的断点被命中。
| 归档时间: |
|
| 查看次数: |
3353 次 |
| 最近记录: |