是否可以将IntelliJ IDEA调试器附加到正在运行的Java进程?如果是,怎么办?
是否可以将IntelliJ IDEA调试器附加到正在运行的Java进程?如果是,怎么办?
Answers:
是! 设置方法如下。
创建远程运行配置:
上面的配置提供了三个只读字段。这些选项告诉JVM在运行应用程序时打开端口5005进行远程调试。将适当的一项添加到要调试的应用程序的JVM选项中。您可能会这样做的一种方式是:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
但这取决于您如何运行应用程序。如果不确定三者中哪一个适合您,请从第一个开始,然后向下浏览列表,直到找到适合的一个。
您可以更改suspend=n
为suspend=y
强制您的应用程序等待,直到与IntelliJ连接之后才能启动。如果要命中的断点发生在应用程序启动时,这将很有帮助。
像往常一样启动应用程序,然后在IntelliJ中选择新配置,然后单击“调试”。
IntelliJ将连接到JVM并启动远程调试。
现在,您可以在需要的地方通过向代码添加断点来调试应用程序。该应用程序的输出将仍然出现在以前的任何位置,但是您的断点将出现在IntelliJ中。
Remote
社区版上可能不可用?我正在使用付费版本。拥有社区版的人可以确认吗?
System.out.println
在远程调试时如何从IntelliJ中获取输出吗?
有可能,但是在启动应用程序时必须添加一些JVM标志。
您必须添加远程调试配置:编辑配置->远程。
然后,您将在显示的对话框窗口中找到必须添加到程序执行中的参数,例如:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
然后,在启动应用程序时,可以附加调试器。如果您希望应用程序等待调试器连接,只需将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 =全部取消命名
--add-opens = java.base / java.io =全部取消命名
--add-opens = java.rmi / sun.rmi.transport =全部取消命名