远程调试Java代码

在工作中我们经常会遇到这样的场景,业务方吭哧吭哧跑过来跟你讲线上有个bug赶紧看一下,这个时候你肯定会说:莫慌,我看一眼日志。但是很多时候只会在一些关键节点记录日志,并不是每一个步骤都能跟踪到日志,假如通过现有日志中无法发现问题,你可能会在可能出现问题的地方加上日志,然后重新发布一遍,这虽然能够解决问题,但是却不够高效,而且上线是一个有风险的操作,很可能会带来新的问题。那有没有更好的方式呢?答案是肯定的,那就是我们今天要介绍的远程debug。Java本身支持调试模式,并且提供了一个简单的调试工具JDB,它可以用来debug一个Java程序,但是是基于命令行进行交互,和我们平常在IDE中使用图形界面进行debug有所差异。
在实际项目中我们一般会分为:开发环境、测试环境、预发环境和线上环境。开发环境一般是在自己本地,需要调试的话很方便,这里我们不讨论。测试、预发和线上环境一般都部署在远程服务器上,预发和线上环境使用的配置、数据库等资源一般都是一致的,这样可以最大化的还原线上场景。为了方便我们在遇到问题时可以快速进行调试并且定位到问题,建议在测试和预发环境都开启Java调试模式,但是线上环境一定要关闭调试模式,因为调试模式会带来额外的性能开销,并且也是不安全的。

名词解释

  1. JPDA:即Java调试体系,是Java platform debug architecture的缩写,它是虚拟机的一整套用于调试的工具和接口。资料
    在这里插入图片描述
  2. JDB:是The Java Debugger的缩写,JPDA是理论基础,而JDB则是它的一种具体实现。

实例演示

  1. 在Java启动命令中加入如下参数:
java -jar -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,address=8081,suspend=n test.jar
  1. IDEA配置
  • 先打开运行时Configurations界面:
    在这里插入图片描述
  • 新建一个Remote配置:
    在这里插入图片描述
  • 输入要调试的远程服务器的IP和端口:
    在这里插入图片描述
  • 启动debug调试:
    在这里插入图片描述
    至此就可以使用IDEA远程调试Java代码了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

成汐

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值