IDEA 开启远程调试

article/2025/10/11 11:28:44

idea 远程调试

背景

在编写代码时, 总会遇到这样或者那样的bug. 有些bug 特别是业务逻辑的bug .
在生产或测试环境好复现而在开发环境很难复现. 现在提供的一种思路, 就是远程调试:
我们可以在本地直接调试生产环境或者测试环境的代码. 只需我们本地代码和远程部署的代码一致.
远程主机就会通过socket 将程序执行情况同步到本地

操作

下面以idea 为例

  1. 设置远程启动配置
    在我们平时启动项目的坐边, 有一个 edit configuration的选项, 然后点击 + , 选择 Remote JVM Debug 选项
    Name 为之后启动的名称,
    Host 是远程服务器的 ip,
    port: 用于远程socket 连接的端口, 注意不要和项目端口一致, 否则可能会导致项目启动失败
    然后idea 会为我们自动生成一条命令行参数:
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010
    在这里插入图片描述

  2. 远程项目启动参数
    如果是使用的 java -jar xxx.jar 启动, 只需要在原来的启动方式加入第1步生成的参数即可. 例如

    ## 注意socket端口(address) 需要根据第一步自己设置的端口来配置java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010  -jar xxx.jar## 如果脚本是以nohup 命令启动的, 则需要添加如下参数  
    ## -Xdebug Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10010
    nohup java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10010 your_application.jar &
    
  3. 重新启动项目
    本地代码要和远程的代码保持一致, 否则有可能会导致调试失败
    在远程项目启动成功后, 在本地运行第一步的远程配置
    在这里插入图片描述

注意事项

  1. 如果服务器配置了 iptables/防火墙 , 需要放开对应的端口
  2. 如果使用的是云服务器, 则也需要放开对应socket端口的安全组
  3. 如果使用开发工具的是eclipse , 远程调试见这位大佬的博客 传送门
  4. 如果使用docker 部署的jar, 则需要进行如下配置

docker 项目进行远程调试

本质和上面步骤差不多, 但是需要在docker 中, 添加一个内部端口和外部端口的映射
以便我们本地能够通过这个映射访问docker 项目部署的容器

步骤:

  1. 修改 DockerFile 文件
    在DockerFile 中的项目启动参数的位置添加idea 生成的参数
    (也可以复制下面参数, 只需修改为自己设置的socket 连接端口)
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010

    部分DockerFile文件展示

    FROM java:8COPY xxx.jar xxx.jarEXPOSE 8081ENTRYPOINT ["java","-Duser.timezone=GMT+8","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010","-jar","/xxx.jar"]
    
  2. 配置Docker 镜像启动参数
    利用 -p hostPort:containerPort 参数将 docker 容器内部 10010 端口映射到项目部署服务器的 10010 端口;
    xxx 为项目名

    docker run -d --restart=always --name xxx -p 8081:8081 -p 10010:10010 \
    -v /home:/home \
    -v /home/szhyyt-logs/xxx/:/logs \
    -v /home/xxx/upload:/upload \xxx:0.0.1  --spring.profiles.active=prod
  3. 启动docker 镜像, 本地运行 Remote Jvm Debug 配置


关于远程调试原理和配置参数解释. 如果还想了解更多请见 这里


http://chatgpt.dhexx.cn/article/XoVol6Tx.shtml

相关文章

Idea远程debug

Idea远程调试 当把一个本地项目部署到远程服务器后有可能出现意想不到错误,这个时候通过远程调试能够更清楚的找到bug所在位置。本篇主要讲解如何使用Idea开发工具 进行调试1.远程调试服务器上面的SpringBoot 项目2.远程调试服务器上运行在tomcat中的项目&#xff0…

Intellij IDEA远程debug教程实战和要点总结

远程调试,特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用。 JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协…

计算机网络——网络工程项目

一、项目要求 1. 假设某单位(学校、企业均可)在不同地理位置具有两个内部网络。这两个内部网络规模不同(分别简称主网、次网)。主网至少覆盖4座楼,每座楼至少4层,每层至少10个房间,次网规模不限…

计算机系统要素-从零开始构建现代计算机 项目代码

《计算机系统要素-从零开始构建现代计算机》是一本好书,这阵子花业余时间学习,并跟着做了章节后面的项目,收获很大。已经完成了前面9章的项目内容,目前正在进行第10章,编译器的编写。 前面9章的项目,以Nand…

2022 年面向初学者的15 个计算机视觉项目创意案例

计算机视觉是人工智能领域最热门的话题之一。 但试图找出学习和掌握该领域的最佳方法很容易混淆。 我们的建议? 不要陷入分析理论概念的困境。 相反,将您的概念知识与实践经验相结合,开始构建您自己的计算机视觉模型! 在本文…

Java项目实战:计算机毕业设计案例分享(Java毕设)

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、…

计算机在段前加项目符号,word中给段落添加项目符号的方法

在不同的杂志和报纸上有时我们会看到下图这样的效果,那么它是如何设置出来的呢,这个我们称为是项目符号,只在每个段落的开始处显示,那么下面小编就教你怎么在word中给段落添加项目符号。 word中给段落添加项目符号的方法 1.加基本…

用计算机视觉可以做什么项目,程序员必看:13个GitHub开源又炫酷的计算机视觉项目...

在这篇文章中,我们列出了一些令人敬畏的计算机视觉GitHub库,希望这些库能激励所有的AI开发者们像这样去构建自己的项目。 计算机视觉GitHub知识库 1、使用CNN进行三维人脸重建(★–4.1k) 这个GitHub存储库有一个项目,其中卷积神经网络用于使用2D图像重建3D人脸模型。这是一个…

计算机视觉项目-文档扫描OCR识别

😊😊😊欢迎来到本博客😊😊😊 本次博客内容将继续讲解关于OpenCV的相关知识 🎉作者简介:⭐️⭐️⭐️目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉pytho…

计算机视觉项目-人脸识别与检测

😊😊😊欢迎来到本博客😊😊😊 本次博客内容将继续讲解关于OpenCV的相关知识 🎉作者简介:⭐️⭐️⭐️目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉深度学…

计算机专业学生如何做项目,计算机专业学生如何申请科研项目?

下面从三个方面来进行解答: 1、比起去哪做,更看重做了什么 作为面试官,最近收到很多本科生的简历,都是写满了各种经历。虽然每个项目都只有2-3个月,感觉CV, speech, NLP啥都做了一遍。 遇到这种情况我一般反而会特别关注你具体的角色,你要对每个你写上简历的项目和经历负…

大创项目计算机科学与技术,计算机系4个项目入选2020大创第二批

原标题:计算机系4个项目入选2020大创第二批 2020大创第二批立项结果 清华大学 “大学生创新创业训练计划”(简称 “大创”)项目是一项强化创新创业能力训练,增强高校学生的创新能力和在创新基础上的创业能力,培养适应创新型国家建设需要的高水平创新人才的计划。 计算机系一…

计算机毕业设计项目大全

文章目录 0 前言1 java web 管理系统 毕设选题2 java web 平台/业务系统 毕设选题3 游戏设计、动画设计类 毕设选题 (适合数媒的同学)4 算法开发5 数据挖掘 毕设选题6 大数据处理、云计算、区块链 毕设选题7 网络安全 毕设选题8 通信类/网络工程 毕设选题9 嵌入式 毕设选题10 开…

计算机专业如何自己增加项目经验?

来源知乎精选话题,已获得作者授权,详情见阅读全文 现状: 最近在找软件开发的实习工作,分别参加了华为,CVTE等面试,在面试过程中,没有项目经验,立马就被面试官表示 没有任何说服力 的…

计算机相关项目

基于PythonWeb志愿填报推荐系统 基于文本挖掘的新闻推荐系统 基于nlp(自然语言处理)的商品评价情感分析系统 基于Python的《三国演义》文本可视化(人物等) 基于Python爬虫的图书系统及可视化实现 空气质量数据可视化与分析系…

112个计算机毕业设计项目,适用于所有JAVA计算机专业毕业生,不走弯路

对于即将开始毕业设计的计算机专业学生,选题和完成项目的压力可能让你感到困扰。今天,我们将为大四的学生分享一些毕业设计项目,希望能为你的毕业设计提供一些灵感。 一、成品列表 以下所有springboot框架项目的源码博主已经打包好上传到百d…

40套计算机毕业设计项目合集【含源码+论文】

前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的java web缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的java web管理系统达不到老师的要求。 为了大家能够顺利以及最少的精…

Android安卓反编译apk源代码,移动应用开发课程

https://blog.csdn.net/qq15577969/article/details/79515621 二、解压apk文件 举例我的apk文件是demo.apk,直接右键解压(也可以把后缀名apk改成zip再解压) 三、dex转换成jar 解压好的文件目录里有个classes.dex,这个classes.de…

Android的编译系统

一、Makefile的主要流程 以下主要流程都在build/core/main.mk里安排。 l 初始化相关的参数设置(buildspec.mk、envsetup.mk、config.mk) l 检测编译环境和目标环境 l 决定目标product l 读取product的配置信息及目标平台信息 l …

AOSP安卓源码编译

写在前面 继上次安卓源码下载篇以后已经过了很久了 这里需要补充一些内容,在现在安卓源码是建议只下载自己需要的某个版本,这样更快 #初始化仓库,-b 指示分支,这里使用 android10 repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/A…