IntelliJ IDEA - 远程 remote debug 教程实战和要点总结

简介: IntelliJ IDEA - 远程 remote debug 教程实战和要点总结

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

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


本机Intellij IDEA远程调试配置


image.png


  1. 打开Inteliij IDEA,顶部菜单栏选择Run-> Edit Configurations,进入下图的运行/调试配置界面。
  2. 点击左上角'+'号,选择Remote。分别填写右侧三个红框中的参数:Name,Host(想要指定的远程调试端口)。
  3. 点击界面右下角应用按钮即可。

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

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


image.png


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

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


Intellij IDEA 启动远程调用

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


image.png


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

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

远程调试原理

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

Java 调试器架构


image.png


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

传输方式,默认为Socket;

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

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

调试模式,默认为Attach;

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

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


配置属性说明补充

IDEA的服务的开启调试模式设置详细说明


image.png


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

各参数解释

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


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


image.png

目录
相关文章
|
9月前
|
人工智能 自然语言处理 Java
DeepSeek 满血版在 VScode 和 IDEA 中怎么用?手把手教程来了
沉默王二分享了通义灵码的使用教程,这款插件集成了DeepSeek-R1和Qwen等模型,支持Java、Python、Go等多种编程语言,适用于IDEA、VSCode等开发环境。它不仅能提供智能问答、代码补全和Bug修复功能,还能通过“AI程序员”实现多文件代码修改。体验流畅,算力充足,无需担心限流问题。文章详细介绍了安装步骤及各项功能的实际操作,展示了其在提升开发效率方面的强大实力。目前,通义灵码正持续优化,未来将带来更多惊喜。
2209 2
|
4月前
|
IDE Linux 开发工具
IntelliJ IDEA最新版安装下载教程及安装教程(附安装包)
本文介绍IDEA的下载与安装教程,包含获取下载地址、安装步骤及激活方法。需注意安装路径为英文目录,运行激活脚本时需管理员权限。按指引操作即可完成激活并使用。
1949 0
|
10月前
|
Java 应用服务中间件 API
Servlet开发流程 (里面有Idea项目添加Tomcat依赖详细教程)
本文详细介绍了Servlet的开发流程,包括在IntelliJ IDEA中添加Tomcat依赖的详细教程。通过上述步骤,开发者可以快速搭建并运行一个基本的Servlet应用,理解并掌握Servlet的开发流程对于Java Web开发至关重要。希望本文能够帮助开发者顺利进行Servlet开发,提高工作效率。
1278 78
|
8月前
|
Java 应用服务中间件 Maven
在IntelliJ IDEA中如何配置使用Maven以创建Tomcat环境
所以,别担心这些工具看起来有些吓人,实际上这些都是为了帮助你更好的完成工作的工具,就像超市里的各种烹饪工具一样,尽管它们看起来可能很复杂,但只要你学会用,它们会为你烹饪出一道道美妙的食物。这就是学习新技能的乐趣,让我们一起享受这个过程,攀登知识的高峰!
567 27
|
10月前
|
IDE 程序员 开发工具
只用正版!教你5个方法,白嫖JetBrains家族的所有产品,包含:IntelliJ IDEA、PyCharm、WebStorm、CLion、Rider
程序员晚枫分享了5种官方认证的免费使用JetBrains家族产品的方法,包括内容创作者计划、开源项目支持、教育许可证、用户组支持和开发者认可计划。这些方法帮助个人开发者与小型团队合法获取强大开发工具,如IntelliJ IDEA、PyCharm等,降低开发成本,提升效率。同时提醒大家遵守使用规范,尊重知识产权。
1950 13
|
11月前
|
人工智能 自然语言处理 Java
IDEA中使用DeepSeek满血版的手把手教程来了!
本文主要介绍阿里云推出的AI编码助手——通义灵码在代码编写、智能问答、bug修复等方面的功能。
IDEA中使用DeepSeek满血版的手把手教程来了!
|
11月前
|
人工智能 自然语言处理 Java
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
236 3
|
11月前
|
人工智能 自然语言处理 Java
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
|
11月前
|
人工智能 自然语言处理 Java
IDEA中使用DeepSeek满血版的手把手教程来了!
IDEA中使用DeepSeek满血版的手把手教程来了!
|
分布式计算 分布式数据库 开发工具
Spark On HBase Idea远程调试
本文介绍如何在本地IDEA远程调试Spark On HBase。 前提条件: 1、已经安装了Intellij IDEA,Git、Maven。2、HBase集群开通了外网地址。3、HBase集群为IDEA运行的机器开通了白名单。
1760 0

热门文章

最新文章