IDEA远程调试Java程序

引言

远程debug的意思是启动一个Java进程,启动一个debugger进程,将两者连接起来,利用debugger来debug Java进程。 事实上目前所有的IDE的debug功能都是通过远程debug方式来实现的,它们都利用了一个叫做JDPA(Java Platform Debugger Architecture)的技术。 利用JDPA我们除了能够在IDE开发的时候debug,也能够将IDE attach到一个生产环境上正在运行的Java进程做debug(事实上这两个场景在本质上是一样的)。

一、IDEA的本地调试

在IDEA本地上调试Java程序,通常就是以debug模式启动应用
image.png
区别于普通的运行启动,debug模式下启动应用时,可以在Console中看到一行打印:
Connected to the target VM, address: '127.0.0.1:64782', transport: 'socket'
翻译过来就是:连接到了VM(即Java程序),地址:127.0.0.1:64782,使用socket通信。
这其实就是使用了JDPA将debugger进程attach到Java程序上了。

二、IDEA的远程调试

IDEA的本地调试,其本质其实也是远程调试,也是利用网络通信方式进行的。
那么IDEA的远程调试,其实也就是模拟出IDEA是如何进行本地调试的。

1.新建一个远程调试

Run -> Edit Configurations…
image.png
点击+号,选择Remote
image.png

2.配置Debugger参数

JVM参数:
用于被远程调试的Java应用,Java应用在启动时,需要配置这些JVM参数
Debugger mode:

  • attach:attach的意思是debugger连接到被debug的Java进程,是主动式的
  • listen:listen的意思是debugger监听由Java进程发送过来的通信,是被动式的

Host & Port:
指定被debug的Java程序所开启的调试端口,注意不是Java的进程端口
image.png

3.配置Java程序参数

Java程序配置JVM参数,根据JDK版本选择对应的参数,如本次配置:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

4.运行Java程序

选择普通的Run方式启动。
运行Java程序时,可以看到类似如下的打印:
Listening for transport dt_socket at address: 5005
image.png

5.运行Debugger

选择Debug方式启动。
运行Debugger时,可以看到打印:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'
此时,证明debugger成功连接到Java程序。
image.png

参考

[1] 远程Debug Java进程的方法


推荐文章

AI最佳实践全栈式从0到1开发个人博客系统


创作不易,只需小手一动我就能开心收获(●゜ⅴ゜)ノ:

|点赞 ❤️|收藏 🌟|评论 💬|

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我喺小VIE

努力创作,值得肯定●゜ⅴ゜)ノ

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值