是否可以将IntelliJ IDEA调试器附加到正在运行的Java进程?如果是,怎么样?
答案 0 :(得分:332)
是的!以下是您设置的方式。
创建远程运行配置:
上面的配置提供了三个只读字段。这些选项告诉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中出现。
答案 1 :(得分:43)
这是可能的,但是在启动应用程序时必须添加一些JVM标志。
您必须添加远程调试配置:编辑配置 - >远程
然后,您将在显示的对话框窗口中找到您必须添加到程序执行中的参数,例如:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
然后,当您的应用程序启动时,您可以附加调试器。如果您希望应用程序等到调试器连接,只需将暂停标志更改为y(suspend=y
)
答案 2 :(得分:5)
另外,不要忘记你需要添加" -Xdebug"如果你想在调试模式下连接,请在app JAVA_OPTS中标记。
答案 3 :(得分:5)
或想法
答案 4 :(得分:0)
我还使用 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 = ALL-UNNAMED
-add-opens = java.rmi / sun.rmi.transport =未命名