手把手教你学会 Intellij IDEA 高级调试技巧之远程调试

把这些弱点和不成功的地方展示出来

是一种真正的自由

 

 

调试也许是程序员工作中最重要的能力,因为程序的逻辑随着时间会越来越复杂,很多时候面对奇奇怪怪的问题我们都会选择调试来深入的看程序的执行流程都是怎样。

 

在企业开发中,往往都会有开发环境,测试环境,正式环境。有些问题在开发环境都是好好的,一到其他环境就掉链子。

 

这类情况其实还是挺常见的,特别是经过本地的调试也不能发现问题的所在的时候,就让人很烦躁了。

 

此时很多同学都会想如果可以调试测试环境的代码就好了,就可以很快发现问题。

 

那么今天就来介绍 IDEA 强大的远程调试,让你像调试本地代码一样去调试其他服务器上的代码。

 

首先我们要有一个 Java 的项目来用于调试,比如一个简单的 Spring Boot 项目。

 

然后把项目打成一个 jar 包,可以通过直接运行 Spring Boot 项目,或者执行 maven 的打包命令

 

mvn clean package 

 

 

88a6774c78b9404e8794a8e2a76c5f1a.png

 

这个时候你就可以把这个 jar 包上传到你的 linux 服务器上了。

 

接下来就去到 IDEA 里面,设置远程调试语言的启动项的命令。

 

首先点击 Run 按钮左边的下拉框,选择Edit Configurations

 

这里也可以使用快捷键 alt shift f10,然后按 0

 

接着就回出现如下的对话框

 

e3bf6df03f55478b9e018763746c0bac.png

 

点击左上角的➕号,选择Remote JVM Debug。

 

 

b95da91986c14b68a9513438cd49aebc.png

 

接着就是输入一些配置信息

 

a026fdb33c8743d19f1953042e87443e.png

 

其中 Name 是给这次远程调试取个名字

 

Host 是项目所在的远程服务器的 ip

 

Port 是这次远程调试监听的端口

 

下面有个以-agentlib 开头的命令行需要复制出来。

 

接着就去远程服务器上运行项目

命令如下

 

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

 

这里就是比平时运行 jar 包多带了一个命令行参数而已。

 

需要注意的是,-agentlib和-jar顺序不要搞反了,否则无法启动监听。

ea34274ff1344c05a5be3e1ea1aac4a3.png

 

最后就可以在本地的 IDEA 里面打断点,并且点击 Debug  按钮开始调试。

 

 ae5e58f6fcbc4a81b498dfa83f25645d.png

 

5cac73031e2042a29b608779a5611227.png

 

这个时候如果看到终端输出如下信息表示就可以远程调试了。如果连不上,需要看看你的服务器防火墙是不是关闭了。

752bd19d0bf74b4c95027ed551d14352.png

 

这个时候可以使用浏览器或者 postman 工具向服务器发起一个请求,看看请求有没有到断点上来。

 

需要注意的是,远程调试会阻塞其他用户相同的请求,所以一般在测试环境使用远程调试。

 

如果你现在只有一个 Windows 电脑,没有一个 linux 服务器,能学习远程调试吗?答案是可以的,只需要把 host 改成 localhost,然后根据上述的步骤操作也能享受到远程调试的魅力。

 

调试好了之后,也要记得及时关闭远程调试,关闭方法如下

 

选择当前的远程调试会话,点击远程调试名称右边的×

 

be988e4c4533469b805ea742bf72c37a.png

 

会弹出如下的对话框

6ccfb58247eb4a5e8051d31834b2c1a7.png

 

点击 Disconnect 断开连接。

 

最后

远程调试给我们提供了一种新的调试方案,可以帮助我们解决一些本地调试无法发现的问题。

 

对于个人来说,遇到服务器 bug, 首先会去查看相关的日志,在本地模拟复现服务器上的 bug,如果不行,再使用 arthas 工具,最后才会使用远程调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

golang学习记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值