是否可以将IntelliJ IDEA调试器附加到正在运行的Java进程?如果是,怎么做?
当前回答
是的!下面是设置方法。
运行配置
创建远程运行配置:
执行->编辑配置… 点击左上角的“+” 在最左边的窗格中选择“Remote”选项 选择一个名称(我将我的命名为“remote-debugging”) 点击“确定”保存:
JVM选项
上面的配置提供了三个只读字段。这些选项告诉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中会出现断点。
其他回答
我也使用Tomcat GUI应用程序(在我的情况下:C:\ Tomcat \bin\Tomcat9w.bin)。
Go to Java tab: Set your Java properties, for example: Java virtual machine C:\Program Files\Java\jre-10.0.2\bin\server\jvm.dll Java virtual machine C:\tomcat\bin\bootstrap.jar;C:\tomcat\bin\tomcat-juli.jar Java Options: -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 options: --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
在AndroidStudio或idea中
配置应用程序将被调试,打开编辑配置
添加“虚拟机选项”配置 “-agentlib: jdwp =运输= dt_socket, server = y,暂停= n,地址= 5005” 还记得“地址”
配置远程调试器 如果不存在,单击+添加
指定“端口”与步骤1中的“地址”相同
另外,不要忘记如果你想在调试模式下连接,你需要在应用JAVA_OPTS中添加“-Xdebug”标志。
是的!下面是设置方法。
运行配置
创建远程运行配置:
执行->编辑配置… 点击左上角的“+” 在最左边的窗格中选择“Remote”选项 选择一个名称(我将我的命名为“remote-debugging”) 点击“确定”保存:
JVM选项
上面的配置提供了三个只读字段。这些选项告诉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中会出现断点。
这是可能的,但是在启动应用程序时必须添加一些JVM标志。
需要添加远程调试配置:Edit configuration -> remote。
然后你会在显示的对话框窗口中发现你必须添加到程序执行中的参数,比如:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
然后,当您的应用程序启动时,您可以附加调试器。如果你想让你的应用程序等待调试器被连接,只需将挂起标志改为y (suspend=y)
推荐文章
- 如何使gdb保存命令历史?
- 如何检查Flutter应用程序是否正在调试中运行?
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 如何设置断点在内联Javascript在谷歌Chrome?
- 如何在IntelliJ中为整个项目配置“缩短命令行”方法
- Chrome调试-打破下一个点击事件
- 开发Android应用最好的IDE是什么?
- PHP -调试Curl
- 抛出异常时中断
- IntelliJ: Error:java: Error: release version 5不支持
- 如何逐步通过Python代码来帮助调试问题?
- 我如何调试一个HTTP POST在Chrome?
- Lombok注释不能在Intellij思想下编译
- Spring RestTemplate -如何启用请求/响应的完整调试/日志记录?
- 在Intellij IDEA中跳转到编辑器快捷方式