debug技巧之远程调试
一、前言
大家好啊,我是summo,今天给大家分享一下我平时是怎么调试代码的,不是权威也不是教学,就是简单分享一下,如果大家还有更好的调试方式也可以多多交流哦。
当我们的应用发布到线上之后,就不能随意启停了,但如果线上出现了BUG怎么办呢?大多数时候我们会借助线上打印的日志进行排查问题,如果幸运的话很快就可以定位到问题,但不幸的话就麻烦了。首先出错的地方可能根本没有打印日志或者日志打印不全,其次有可能本地是好好的但线上就是不行,总之倒霉的时候喝凉水都塞牙。。。
每当碰到这个情况我就在想,要是我能像本地调试一样调试线上的代码就好了,保证很快就可以排查出问题。之前经验少,以为我这个想法不可能实现,后来才发现只有我想不到,没有别人做不到的,这种远程调试的方式真的有,而且实现起来还挺简单。
接下来我就给大家介绍一下IntelliJ IDEA 自带的Remote JVM Debug帮助我们实现远程调试。
IntelliJ IDEA 提供了一个非常有用的功能,即远程调试(Remote JVM Debug)。这个功能允许开发者在不重启应用的情况下,连接到一个正在运行的 Java 应用程序,并进行调试。
二、Remote JVM Debug
1. 配置远程调试端口
首先,你需要在运行的 Java 应用程序中启用远程调试功能。这通常是通过在启动应用程序时添加 JVM 参数来实现的:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -jar demo.jar
这里以 5005 端口为例,suspend=n 表示 JVM 启动时不会暂停,直到调试器连接上。例如这样:

注意:
-agentlib和-jar顺序不要搞反了,否则无法启动监听。
2. 启动 IntelliJ IDEA 的远程调试
(1)找到Edit Configurations...

(2)点击左上角的 "+" 号,选择 "Remote JVM Debug"

(3)输入远程调试的配置
- 在 "Name" 字段中输入配置名称。
- 在 "Host" 字段中输入运行 Java 应用程序的主机地址(如果是本机,可以使用 localhost)。
- 在 "Port" 字段中输入你之前设置的远程调试端口(例如:5005)。

(4)启动远程调试
当你的 Java 应用程序运行并且已经启用了远程调试功能后,IntelliJ IDEA 应该能够检测到它。如果一切正常,IDEA 将显示一个对话框,提示一个远程 JVM 正在尝试连接,就像下图所示。

进到这个界面,说明你成功进入了远程调试,现在你可以在代码中设置断点,就像在本地调试一样。当程序执行到断点处时,它将暂停,允许你检查变量、调用栈和程序状态。
(5)不要让断点卡主整个进程
由于远程调试执行到断点处,整个项目都会被卡住,这个时候就需要对该断点设置一下。

3. 注意事项
- 确保防火墙设置允许调试端口的通信。
- 如果你的应用程序已经在运行,并且没有启用远程调试,你可能需要重启它。
- 在调试过程中,保持网络连接稳定,以避免调试会话中断。
- 这个远程调试相当于开了个后门,调试结束之后要记得及时关闭。
三、小结一下
Remote JVM Debug给我们排查线上BUG提供了一份新的方案,什么情况下用,什么时候使用这个看个人。对于我来说,排查线上BUG首先还是看日志,其实是利用arthes,最后实在搞不定才会使用Remote JVM Debug,我是不太建议经常使用远程调试,建议线下测试,防止造成生产数据破坏或泄漏。
debug技巧之远程调试的更多相关文章
- 一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试
一:背景 1. 讲故事 每次项目预交付的时候,总会遇到各种奇葩的坑,我觉得有必要梳理一下以及如何快速解决的,让后来人避避坑,这篇就聊聊自己的所闻所遇: 我去,本地环境代码跑的哧溜,上了测试环境出问题 ...
- tomcat开发远程调试端口以及利用eclipse进行远程调试
一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里: SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...
- 利用PyCharm进行Python远程调试
背景描述 有时候Python应用的代码在本地开发环境运行十分正常,但是放到线上以后却出现了莫名其妙的异常,经过再三排查以后还是找不到问题原因,于是就在想,要是可以在服务器环境中进行单步跟踪调试就好了. ...
- Eclipse远程调试hadoop源码
1. 修改对应调试端口 之前的一篇blog里讲述了hadoop单机版调试的方法,那种调试只限于单机运行hadoop命令而已,对于运行整个hadoop环境而言是不可取的,因为hadoop会开启多个jav ...
- SpringBoot工程+热部署进行远程调试
本文转载自:https://blog.csdn.net/qq_31868349/article/details/78553901 SpringBoot工程+热部署进行远程调试 本地端添加配置 在pom ...
- hadoop下远程调试方法
JPDA 简介Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用 ...
- Tomcat配置远程调试
===========方法1================================ tomcat7 :catalina.bat jpda start,调试端口默认为8000 ======== ...
- python基础===利用PyCharm进行Python远程调试(转)
原文链接:利用PyCharm进行Python远程调试 背景描述 有时候Python应用的代码在本地开发环境运行十分正常,但是放到线上以后却出现了莫名其妙的异常,经过再三排查以后还是找不到问题原因,于是 ...
- 开启Java远程调试
在JDK启动时,加入 -Xrunjdwp:transport=dt_socket,address=9900,server=y,suspend=n -Dcom.sun.management.jmxrem ...
- Intellij IDEA远程调试tomcat
1.windows系统 文件catalina.bat首行增加下面代码 set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE ...
随机推荐
- #Tarjan,SPFA,差分约束系统#BZOJ 2330 AcWing 368 银河
题目 分析 首先这明显是一道差分约束题,但是无解的情况确实比较恶心, 考虑它的边权为0或1,无解当且仅当某个强连通分量内的边至少一条边边权为1, 那么用有向图的Tarjan缩点后跑SPFA就可以了 代 ...
- Python 潮流周刊第 45 期(摘要)+ 赠书 5 本《Python语言及其应用(第2版)》
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- Maven 三种archetype说明合集【转载】
Maven 三种archetype说明 新建Maven project项目时,需要选择archetype. 那么,什么是archetype? archetype的意思就是模板原型的意思,原型是一个Ma ...
- Centos 6.4 配置网页服务器
Centos 6.4 配置网页服务器 (2013-08-08 22:59:09) 转载▼ 分类:linux系统 今天值班,在单位找一台电脑安装了Centos 6.4操作系统. 一.安装软件 yum ...
- 报表输入页码翻页(润乾 V2018)
报表数据分了太多页,一页一页翻页查看数据嫌麻烦,可以试试这种翻页效果--输入页码翻页. 润乾报表提供了翻页相关的 JS 函数,可以在报表展现的页面中添加 JS 调用翻页函数实现输入页码跳转到对应页. ...
- 重学c#系列—— 简单编写一个guid [娱乐篇]
前言 什么是guid? 全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的 ...
- spring boot properties 编码问题[四]
情景 application.properties 中: server.port=8081 person.last-name=张三 person.age=18 person.birth=2017/12 ...
- Pytorch-tensor维度的扩展,挤压,扩张
数据本身不发生改变,数据的访问方式发生了改变 1.维度的扩展 函数:unsqueeze() # a是一个4维的 a = torch.randn(4, 3, 28, 28) print('a.shape ...
- python pickle模块,打包创建的对象,做持久化
pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. pickle.dump(obj, file[, protocol]) 序列化对象,并将结果数据流写入到文件对象中.参数pr ...
- 实时数仓入门训练营:Hologres性能调优实践
简介: <实时数仓入门训练营>由阿里云研究员王峰.阿里云资深技术专家金晓军.阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建 ...