Why does intellij idea not kill the debug process immediately?

不想你离开。 提交于 2020-01-01 08:52:39

问题


I'm using idea 2016.1.1 and wonder why idea does not kill the debug process immediately when I click the stop button.

E.g. use this piece of code to reproduce it

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);
    }
  }
}

Set a breakpoint before the loop begins.

Start a debugging session, wait until it breaks and press the red stop button (CTRL-F2).

I would expect that the process is stopped immediately and that it does not print anything, but it prints:

"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

Why is the process not stopped immediately?

Is there another way to force an immediately stop?

EDIT

Just tried it with idea 14.1.5. The process stops immediately as expected. It seems that a bug was introduced with 2016.


回答1:


My investigations so far...

When IDEA starts a java process it uses main wrapper. This wrapper starts a daemon thread that listens to a ServerSocket for commands.

IDEA sends a STOP signal to that server socket. When the server thread receives the STOP signal it exists the jvm using System.exit(1).

It seems that IDEA resumes the JVM from debug and then sends the STOP signal. So until the STOP signal is received the process continues.

I opened a bug at https://youtrack.jetbrains.com/issue/IDEA-155007




回答2:


The bug IDEA-155007 is fixed in 2016.3 (163.7743.44). I've just verified it.



来源:https://stackoverflow.com/questions/36745457/why-does-intellij-idea-not-kill-the-debug-process-immediately

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!