是否可以将IntelliJ IDEA debugger连接到运行中的Java进程?如果可以,如何连接?
是否可以将IntelliJ IDEA debugger连接到运行中的Java进程?如果可以,如何连接?
是的!以下是设置步骤。
创建一个远程运行配置:
上述配置提供了三个只读字段。这些选项告诉JVM,在运行应用程序时打开5005端口以进行远程调试。将适当的选项添加到您正在调试的应用程序的JVM选项中。一种可能的方法是这样的:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
但这取决于您如何运行应用程序。如果您不确定哪个适用于您,请从第一个开始并按列表向下进行,直到找到适合您的。
您可以将suspend=n
更改为suspend=y
,以强制您的应用程序等待与IntelliJ连接后才启动。如果您想要在应用程序启动时发生断点,这很有帮助。
像往常一样启动应用程序,然后在IntelliJ中选择新配置并点击“Debug”。
IntelliJ将连接到JVM并启动远程调试。
现在,您可以根据需要向代码添加断点来调试应用程序。应用程序的输出仍将出现在先前出现的位置,但是断点将在IntelliJ中触发。
System.out.println
的输出吗? - Don Rhummy这是可能的,但是在启动应用程序时,您需要添加一些JVM标志。
您需要添加远程调试配置: 编辑配置 -> 远程。
然后在显示的对话框中找到参数,您需要将其添加到程序执行中,例如:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
当你的应用程序启动后,你可以附加调试器。如果你希望你的应用程序等待调试器连接,只需将挂起标志更改为y (suspend=y
)
suspend=y
)我也使用Tomcat GUI应用程序(在我的情况下:C:\tomcat\bin\Tomcat9w.bin)。
进入Java选项卡:
设置您的Java属性,例如:
Java虚拟机
C:\Program Files\Java\jre-10.0.2\bin\server\jvm.dll
Java虚拟机
C:\tomcat\bin\bootstrap.jar;C:\tomcat\bin\tomcat-juli.jar
Java选项:
-Dcatalina.home=C:\tomcat
-Dcatalina.base=C:\tomcat
-Djava.io.tmpdir=C:\tomcat\temp
-Djava.util.logging.config.file=C:\tomcat\conf\logging.properties
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
Java 9选项:
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED