IDEA远程Debug

Published on 2026-04-02 14:00 in 分类: 随笔 with 狂盗一枝梅
分类: 随笔

线上出了问题,但是本地不能重现,可以通过IDEA远程Debug功能远程调试排查问题。具体操作如下:

一、本地IDEA配置

单击项目顶部“Edit Configurations”

image-20260402132713787

新增运行配置:"Remote JVM Debug"

image-20260402132816314

之后进入远程Debug配置页面:

image-20260402133044513

页面上有些配置,配置详情如下所示:

1、Debugger mode

有两种模式:

Attach to remote JVM:最常使用的模式,本地连接远程JVM,需要确保远程端口号(默认5005,可自定义)开放能够被本地连接

Listen to remote JVM:不常使用的模式,远端连接本地JVM,需要确保本地端口号(默认5005,可自定义)开放能够被远端连接

2、Transport

调试和被调试的JVM的通信方式。

Socket:套接字连接的方式,通过TCP方式通信,适用于调试的JVM和被调试的JVM在不同机器上的情况。

Shared memory:共享内存方式,适用于调试的JVM和被调试的JVM在相同的机器上的情况,传输速度比Socket快。

3、JDK选择

根据运行的JVM情况,选择对应的JDK版本,不同的JDK版本对应不同的运行命令

image-20260402134032355

将命令行参数复制到被调试JVM的启动命令行中。

4、use module classpath选择

如果是maven组织的多模块项目,选择根模块即可。

二、远程JVM配置

根据上一步复制的命令行参数,比如Java8,需要将命令行参数

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

复制到启动命令行,比如完整的jar包启动命令:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar

三、调试

先启动远程jar包,jar包启动命令行第一行输出会提示"Listening for transport dt_socket at address: 5005",这表示自己已经准备好客户端远程调试了。

之后点击IDEA的调试启动按钮

image-20260402135649297

如果连接成功,则会在输出控制台输出类似如下内容:

Connected to the target VM, address: '10.182.50.44:31819', transport: 'socket'

之后正常打断点,远程JVM运行到断点处代码,本地IDEA会自动跳转到对应的断点处代码。

END。


#idea #java #jvm
复制 复制成功