为什么intellij idea不立即杀死调试进程?
Why does intellij idea not kill the debug process immediately?
我正在使用 idea 2016.1.1 并且想知道为什么当我单击停止按钮时 idea 没有立即终止调试进程。
例如使用这段代码重现它
public class Main {
public static void main(String[] args) {
int i = 0;
while (true) {
i++;
System.out.print("I'm still alive: ");
System.out.println(i);
}
}
}
在循环开始之前设置一个断点。
启动调试会话,等待它中断并按红色停止按钮 (CTRL-F2)。
我希望进程立即停止并且它不会打印任何东西,但会打印:
"C:\Program Files\Java\jdk1.6.0_38\bin\java" ....
Connected to the target VM, address: '127.0.0.1:54394', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:54394', transport: 'socket'
I'm still alive: 1
I'm still alive: 2
I'm still alive: 3
I'm still alive: 4
...
I'm still alive: 319
I'm still alive: 320
I'm still alive: 321
I'm still alive:
Process finished with exit code -1
为什么进程没有立即停止?
还有其他方法可以强制立即停止吗?
编辑
刚刚用 idea 14.1.5 试了一下。该过程按预期立即停止。好像是2016引入了一个bug。
到目前为止我的调查...
当 IDEA 启动一个 java 进程时,它使用主包装器。这个包装器启动一个守护线程,监听 ServerSocket
的命令。
IDEA 向该服务器套接字发送一个 STOP
信号。当服务器线程收到 STOP
信号时,它使用 System.exit(1)
.
存在 jvm
看来是IDEA从调试中恢复了JVM,然后发送了STOP
信号。因此,在收到 STOP
信号之前,该过程将继续。
打开了一个错误
错误 IDEA-155007 已在 2016.3 (163.7743.44) 中修复。我刚刚验证过了。
在调试会话期间按 Stop
时,
IntelliJ Idea 的默认行为是不立即杀死进程!.
但如果您需要更改此行为以立即终止调试进程
我认为这应该是默认行为:)
您可以通过设置激活它:
Settings
> Build, Execution, Development
> Debugger
>
我正在使用 idea 2016.1.1 并且想知道为什么当我单击停止按钮时 idea 没有立即终止调试进程。
例如使用这段代码重现它
public class Main {
public static void main(String[] args) {
int i = 0;
while (true) {
i++;
System.out.print("I'm still alive: ");
System.out.println(i);
}
}
}
在循环开始之前设置一个断点。
启动调试会话,等待它中断并按红色停止按钮 (CTRL-F2)。
我希望进程立即停止并且它不会打印任何东西,但会打印:
"C:\Program Files\Java\jdk1.6.0_38\bin\java" ....
Connected to the target VM, address: '127.0.0.1:54394', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:54394', transport: 'socket'
I'm still alive: 1
I'm still alive: 2
I'm still alive: 3
I'm still alive: 4
...
I'm still alive: 319
I'm still alive: 320
I'm still alive: 321
I'm still alive:
Process finished with exit code -1
为什么进程没有立即停止?
还有其他方法可以强制立即停止吗?
编辑
刚刚用 idea 14.1.5 试了一下。该过程按预期立即停止。好像是2016引入了一个bug。
到目前为止我的调查...
当 IDEA 启动一个 java 进程时,它使用主包装器。这个包装器启动一个守护线程,监听 ServerSocket
的命令。
IDEA 向该服务器套接字发送一个 STOP
信号。当服务器线程收到 STOP
信号时,它使用 System.exit(1)
.
看来是IDEA从调试中恢复了JVM,然后发送了STOP
信号。因此,在收到 STOP
信号之前,该过程将继续。
错误 IDEA-155007 已在 2016.3 (163.7743.44) 中修复。我刚刚验证过了。
在调试会话期间按 Stop
时,
IntelliJ Idea 的默认行为是不立即杀死进程!.
但如果您需要更改此行为以立即终止调试进程
我认为这应该是默认行为:)
您可以通过设置激活它:
Settings
> Build, Execution, Development
> Debugger
>