是否可以将IntelliJ IDEA调试器附加到正在运行的Java进程?如果是,怎么做?
这是可能的,但是在启动应用程序时必须添加一些JVM标志。
需要添加远程调试配置:Edit configuration -> remote。
然后你会在显示的对话框窗口中发现你必须添加到程序执行中的参数,比如:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
然后,当您的应用程序启动时,您可以附加调试器。如果你想让你的应用程序等待调试器被连接,只需将挂起标志改为y (suspend=y)
suspend=y
是的!下面是设置方法。
创建远程运行配置:
上面的配置提供了三个只读字段。这些选项告诉JVM在运行应用程序时打开端口5005以进行远程调试。将适当的选项添加到正在调试的应用程序的JVM选项中。你可以这样做:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
但这取决于您如何运行应用程序。如果你不确定哪一个适合你,那就从第一个开始,直到找到一个适合你的。
您可以将suspend=n更改为suspend=y,以强制应用程序等待,直到连接IntelliJ才能启动。如果想要命中的断点发生在应用程序启动时,这是很有帮助的。
suspend=n
像往常一样启动应用程序,然后在IntelliJ中选择新的配置并点击“调试”。
IntelliJ将连接到JVM并启动远程调试。
现在可以通过在需要的地方向代码中添加断点来调试应用程序。应用程序的输出仍然会出现在之前的位置,但是IntelliJ中会出现断点。
另外,不要忘记如果你想在调试模式下连接,你需要在应用JAVA_OPTS中添加“-Xdebug”标志。
在AndroidStudio或idea中
add“虚拟机选项”配置 “-agentlib: jdwp =运输= dt_socket, server = y,暂停= n,地址= 5005” 还记得“地址”< / p >
“-agentlib: jdwp =运输= dt_socket, server = y,暂停= n,地址= 5005”
指定“端口”与步骤1中的“地址”相同 < / p >
我还使用Tomcat GUI应用(在我的情况下:C:\tomcat\bin\Tomcat9w.bin)。
< / p >
设置Java属性,例如:
Java虚拟机
C:\Program Files\Java\jre-10.0.2\bin\server\jvm.dll
C: \ tomcat \ bin \ bootstrap.jar; C: \ tomcat \ bin \ tomcat-juli.jar
< em > < / em > Java选项:
-Dcatalina.home = C: \ tomcat -Dcatalina.base = C: \ tomcat -Djava.io.tmpdir = C: \ temp \ tomcat -Djava.util.logging.config.file = C: \ tomcat \ conf \ logging.properties -agentlib: jdwp =运输= dt_socket, server = y,暂停= n,地址= *:8000
-Dcatalina.home = C: \ tomcat
-Dcatalina.base = C: \ tomcat
-Djava.io.tmpdir = C: \ temp \ tomcat
-Djava.util.logging.config.file = C: \ tomcat \ conf \ logging.properties
-agentlib: jdwp =运输= dt_socket, server = y,暂停= n,地址= *:8000
Java 9选项:
——add-opens = java.base / . lang = ALL-UNNAMED ——add-opens = java.base / io = ALL-UNNAMED ——add-opens = java.rmi / sun.rmi.transport = ALL-UNNAMED 李< /引用> < / >
——add-opens = java.base / . lang = ALL-UNNAMED
——add-opens = java.base / io = ALL-UNNAMED
——add-opens = java.rmi / sun.rmi.transport = ALL-UNNAMED