Intellij IDEA如何远程调试

一般情况下,对于分布式系统的调试还是比较麻烦的,比较常见的方式是在远程调用的过程中通过不断的打印log,然后重新部署上线、调试、定位问题,实在是过于麻烦。

实际上Java是支持远程调试的,只是大家平时没有怎么用过罢了,本文通过Intellij IDEA为例讲解如何来使用远程调试。

准备测试程序

1
2
3
4
5
6
7
8
@GetMapping("/list")
public ResponseEntity<?> list() {
List<String> arrayList = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
arrayList.add(String.format("arrayList_item_%s", i));
}
return ResponseEntity.ok(arrayList);
}

这个程序很简单,就是循环生成ArrayList对象罢了。

使用特定的JVM参数启动程序

将程序上传到服务器(10.211.55.5)上后,使用相关的JVM参数启动程序:

1
-Xdebug -Xrunjdwp:transport=dt_socket,address=${debugger_port},server=y,suspend=n

其中,${debugger_port}代表开启远程调试的端口,开启完毕后,要注意防火墙相关的配置

1
java -D -Xdebug -Xrunjdwp:transport=dt_socket,address=9012,server=y,suspend=n -jar springboot-test-0.0.1-SNAPSHOT.jar

启动成功后如图:

配置IDEA连接远程调试

打开Edit Configurations,然后新建Remote 配置后如图:

然后启动之,如若控制台出现以下提示,则表示连接成功了:

1
Connected to the target VM, address: '10.211.55.5:9012', transport: 'socket'

开始调试

后面的步骤就像是在本地一样了,该怎么调试就怎么调试:

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×