Intellij IDEA远程debug教程实战和要点总结(推荐)

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

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设置远程属性说明,以下为谷歌翻译

到此这篇关于Intellij IDEA远程debug教程实战和要点总结的文章就介绍到这了,更多相关Intellij IDEA远程debug内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 在Intellij IDEA中使用Debug(图文教程)

    Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码. 所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容: 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中断Debug 十.附:JRebel激活 一.Debug开篇 首先

  • Intellij idea远程debug连接tomcat实现单步调试

    web项目部署到tomcat上之后,有时需要打断点单步调试,如果用的是Intellij idea,可以通过如下方法实现: 开启debug端口,启动tomcat 以tomcat7.0.75为例,打开bin目录下的catalina.bat文件,如下图,可以看到默认的debug端口是8000,如果本地的8000已经被占用,请改成一个未占用的端口号: 在bin目录下执行命令catalina.bat jpda start,可以启动tomcat并开启远程调试的端口 在Intellij idea中远程连接to

  • 详解IDEA 启动tomcat 端口占用原因以及解决方法( 使用debug模式)

    在使用IDEA调试程序的时候,有时候在上一次tomcat关闭未完全的时候,再一次启动debug模式时会出现如下提示 提示我们端口127.0.0.1:3934这个端口被占用,无法debug模式运行程序. 对于还不怎么熟悉使用IDEA的开发而言,会非常奇怪为什么启动tomcat容器运行程序的时候不是使用8080端口,而是用到3934(也可能是其他的端口号). 于是运行cmd系统命令使用netstat -ano查看系统中正在被使用的端口列表,却发现这个端口并不在列表中. 很奇怪的事. 经过研究,发现原

  • 详解Intellij IDEA 2017 debug断点调试技巧(总结)

    在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦. 下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的,有的人keymap是mac版的,有的是Windows版的. 我的就是Windows,而且修改keymap为eclipse的keymap,因为我算是eclipse转过来的吧. 下面直接看图,详细解释,每一个按钮(按钮对应图中的数字)都是什么功能. 1,rerun XXX,这个就是直接重新跑某个程序. 2,这个

  • IDEA Debug模式下改变各类型变量值的方法

    本文介绍了IDEA Debug模式下改变各类型变量值的方法,分享给大家,具体如下: 测试类 import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; /** * Created by PengHongfu 2018-04-18 18:21 */ public class testClass { private static final org.slf4j.Logger logger = Logg

  • Intellij IDEA远程debug教程实战和要点总结(推荐)

    远程调试,特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用. JAVA 支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协议联系,本地的Java文件在远程JVM建立联系和通信.此篇是Intellij IDEA远程调试的教程汇总和原理解释,知其然而又知其所以然. 本机Intellij IDEA远程调试配置 1,打开Inteliij IDEA,顶部菜单栏选择Run-> Edit Configurations,进入下

  • IntelliJ IDEA远程Debug Linux的Java程序,找问题不要只会看日志了(推荐)

    1 前言 我们习惯于在本地开发的时候debug,能快速定位与解决问题,那部署在服务器上是不是就没有办法了呢?只能通过查看日志来定位? 不是的,在远端的服务器上,我们一样可以debug. 2 IDEA的debug 我们先来看一下在IntelliJ IDEA直接debug是怎样的. 先准备一个简单的Java程序: package com.pkslow.basic; import java.util.Map; public class RemoteDebug { public static void

  • java程序员必会的远程debug教程

    目录 正文 启动添加参数 配置idea 点击 editConfigurations... 点击左上角的+号,选择Remote Jvm Debug 填写地址和端口号 启动debug模式 测试 正文 现在都是拆分的比较细的微服务了,当系统运行在测试环境出现问题的时候,就需要按照日志来分析出什么问题了.有的能看出来,要是年久失修的老项目,那么说不定连log都没有.纯纯的看源码找问题,效率就很低了. 其实这个时候还可以远程debug,来更精确的定位问题.效率也是高高滴. 这个之前在工作中其实一直在使用,

  • window版 IntelliJ IDEA 快捷键图文教程

    一.重构 1.重构变量 修改变量名称,即重命名.快捷键 Shift + F6 ,位于 Refactor 中. 2.重构方法 可以增加变量个数.快捷键 Ctrl + F6 ,位于 Refactor 中. 二.抽取 1.抽取变量 抽取变量的快捷键 Ctrl +Alt + V,位于 Refactor 中的Extract. 2.抽取静态变量 抽取静态变量的快捷键 Ctrl + Alt + C. 3.抽取成员变量 抽取成员变量的快捷键 Ctrl + Alt + F. 4.抽取方法参数 抽取方法参数的快捷键

  • 详述IntelliJ IDEA远程调试Tomcat的方法(图文)

    在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法.在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试. 首先,配置remote: 如上图所示,点击Edit Configurations,进入如下界面: 如上图所示,我们进入了Run/Debug Configurations界面,然后点击左上角的+,选择Remote: 标注 1:运行远程 JVM 的命令行参数: 标注 2:传输方式,默认为Socket: 标注 3:调试模式

  • 汇编语言学习手把手的Debug教程

    目录 Debug 是什么 Debug 实战 Debug -r Debug -d Debug -e Debug -u Debug -t Debug -a 总结 关于汇编的第一篇文章: 爱了爱了,这篇寄存器讲的有点意思 Hello大家好,我是程序员cxuan!我们上篇文章了解了一下基本的寄存器,这篇文章我们来进行实际操作一下. 原文链接:https://mp.weixin.qq.com/s/PQzuKtSiHwZleTosvop68A 我们以后将会用到很多 Debug 命令,这里我们先来熟悉一下它们

  • Ubuntu下MySQL安装及配置远程登录教程

    本文实例为大家分享了MySQL安装及配置远程登录教程,供大家参考,具体内容如下 一.安装MySQL 一.安装MySQL 1. sudo apt-get install mysql-server 2. sudo apt-get install mysql-client 3. sudo apt-get install libmysqlclient-dev 注意:安装过程中会提示设置密码和确认密码.记住密码. 安装完成之后可以使用如下命令来检查是否安装成功: root@root:/# ps aux|g

  • eclipse/intellij idea 远程调试hadoop 2.6.0

    很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试,那么问题来了,win7下的eclipse或intellij idea如何远程提交map/reduce任务到远程hadoop,并断点调试? 一.准备工作 1.1 在win7中,找一个目录,解压hadoop-2.6.0,本文中是D:\yangjm\Code\study\hadoop\hadoop-2.

  • Eclipse远程debug的步骤与注意事项

    目的:可以适用于支付宝微信支付接口的一些签名验证需要放在服务端才能执行又需要debug时. 步骤:需要在远程服务端修改tomcat配置,然后在本地进行debug配置. 远程tomcat配置:个人习惯使用./startup.sh进行启动,所以介绍对应方式,有兴趣可以留言,我们探讨其它方式. 在catalina.sh文件中加入如下配置: CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend

随机推荐