如何使用 idea 远程调试 Java 代码

本贴最后更新于 1784 天前,其中的信息可能已经事过境迁

背景

前段时间程序部署到生产环境后出现了一些不可预见的问题,只会输出日志再分析的我苦不堪言,偶然发现 idea 可以直接对程序进行远程调试,实在方便的很。

不过远程调试对网络的要求比较高,如果网络不是十分流畅,调试时的卡顿也会比较麻烦。

参考文章:https://www.cnblogs.com/krockey/p/5056945.html

启动脚本配置

想要让程序支持远程调试功能,只需要在启动时加上特定的 JVM 参数,根据 JDK 版本的不同,有如下几种脚本:

  • >1.4.x
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001
  • =1.4.x
    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001
  • <1.4.x
    -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001

最后的 4001 就是远程调试端口,可以任意修改。如果生产环境是云服务器,还要放行防火墙和安全组。

IDEA 配置

idea 配置非常简单,按下图步骤操作:

image.png

image.png

image.png

全部修改完成后,点击“OK”

开始远程调试

image.png

点击图中的 debug ,当 console 窗口中打印出 Connected to the target VM, address: 127.0.0.1:4001', transport: 'socket' 代表连接成功,这时候在代码里加上断点,再对生产环境的程序发起请求,就会自动执行到断点处了。

需要注意,远程调试的是生产环境的代码,即便修改了本地代码,调试时也不会执行,所以要保证生产环境的代码与本地一致

  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...