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

article/2025/10/11 11:33:22

   远程调试,特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用。

  JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协议联系,本地的Java文件在远程JVM建立联系和通信。此篇是Intellij IDEA远程调试的教程汇总和原理解释,知其然而又知其所以然。

本机Intellij IDEA远程调试配置

1,打开Inteliij IDEA,顶部菜单栏选择Run-> Edit Configurations,进入下图的运行/调试配置界面。

2,点击左上角'+'号,选择Remote。分别填写右侧三个红框中的参数:Name,Host(想要指定的远程调试端口)。

3,点击界面右下角应用按钮即可。

二,服务器端开启调试模式,增加JVM启动参数,以支持远程调试

  服务器端的catalina.sh文件,在Tomcat的安装目录下,复制到本地,进行编辑,在第一行添加参数配置如下,完成后粘贴回去。

文本:

CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8089"

  

配置添加之后,重启tomcat即可生效(shutdown.sh /startup.sh)到此,开始远程调试。

, Intellij IDEA 启动远程调用

最后,打开IDEA,程序上打上断点,运行模式选远程,点击运行。调用服务器端运行的系统程序,系统自动进入断点

4,为什么可以进行远程调试,背后的原理是什么?

   首先,了解下的Java程序的执行过程- 分为以下几个步骤:Java的文件 - - 编译生成的类文件(class文件) - - JVM加载类文件 - - JVM运行类字节码文件 - - JVM翻译器翻译成各个机器认识的不同的机器码。

远程调试原理

   众所周知,Java 程序是运行在Java 虚拟机(JVM )上的,具有良好跨平台性,是因为Java程序统一以字节码的形式在JVM中运行,不同平台的虚拟机都统一使用这种相同的程序存储格式。因为都是类字节码文件,只要本地代码和远程服务器上的类文件相同,两个JVM通过调试协议进行通信(例如通过插座在同一个端口进行通信),另外需要注意的时,被调试的服务器需要开启调试模式,服务器端的代码和本地代码必须保持一致,则会造成断点无法进入的问题。

<code>Java</code>的调试器架构

   这个架构其实质还是JVM,只要确保本地的Java的源代码与目标应用程序一致,本地的Java的源码就可以用插座连接到远端的JVM,进而执行调试。因此,在这种插座连接模式(下文介绍)下,本地只需要有源码,本地的Java的应用程序根本不用启动。

传输方式,默认为Socket ;

套接字:MACOS,Linux的系统使用此种传输方式;

共享内存:WINDOWS系统使用此种传输方式。

调试模式,默认为Attach ;

Attach :此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;

Socket :此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。

配置属性说明补充

1.idea的的服务的开启调试模式设置详细说明,

文本:

CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8089"

2.各参数解释:

  • -Xdebug:通知JVM工作在调试模式下
  • -Xrunjdwp:通知JVM使用(java debug wire protocol)来运行调试环境。参数同时有一系列的调试选项:
  • <code>session</code>:指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另外dt_shmem指用共享内存方式,其中dt_shmem只适用于窗口平台.server  参数是指是否支持在服务器模式的虚拟机中。
  • onthrow:指明当产生该类型的异常时,JVM就会中断下来,进行调式该参数任选。
  • <code>release</code>:指明当JVM被中断下来时,执行的可执行程序该参数可选
  • <code>suspend</code><:指明:是否在调试客户端建立起来后,再执行 JVM。
  • onuncaught(= y或n)指明出现未捕获的异常后,是否中断JVM的执行。

3.IDEA设置远程属性说明,以下为谷歌翻译


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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

下面从三个方面来进行解答: 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 开…

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

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

计算机相关项目

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

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

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

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

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

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

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

Android的编译系统

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

AOSP安卓源码编译

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

Android源码编译

简要说明 现在的Android应用开发开源项目感觉就像春秋战国时期&#xff0c;各种思想雨后春笋&#xff0c;百花齐放&#xff0c;如算法&#xff0c;如图形&#xff0c;如数据库&#xff0c;如网络协议&#xff0c;林林总总、煞是好看&#xff0c;Github也成为了开源者及受益者的…

Android编译系统介绍

1. 编译系统变化 Android 最初是用 Android.mk 来定义模块的&#xff0c; Android.mk 本质上就是 Makefile。随着 Android 工程越来越大&#xff0c;包含的模块越来越多&#xff0c;以 Makefile 组织的项目编译花费的时间越来越多。google 在 Android 7.0 开始引入了 ninja 编…