详述 IntelliJ IDEA 远程调试 Tomcat 的方法

article/2025/10/11 6:43:19

博主说:在调试代码的过程中,为了更好的定位及解决问题,有时候需要我们使用远程调试的方法。在本文中,就让我们一起来看看,如何利用 IntelliJ IDEA 进行远程 Tomcat 的调试。

首先,配置remote

1

如上图所示,点击Edit Configurations,进入如下界面:

2

如上图所示,我们进入了Run/Debug Configurations界面,然后点击左上角的+,选择Remote

remote

  • 标注 1:运行远程 JVM 的命令行参数;
  • 标注 2:传输方式,默认为Socket
  • 标注 3:调试模式,默认为Attach
  • 标注 4:服务器 IP 地址,默认为localhost,需要修改为目标服务器的真实 IP 地址;
  • 标注 5:服务器端口号,默认为5005,需要修改为目标服务器的真实端口号;
  • 标注 6:搜索资源是使用的环境变量,默认为<whole project>,即整个项目。

如上图所示,其中 标注 2标注 3 又分别有两种分类,对于 标注 2

  • 标注 2:传输方式,默认为Socket
  • Socket:macOS 及 Linux 系统使用此种传输方式;
  • Shared memory: Windows 系统使用此种传输方式。

对于 标注 3

  • 标注 3:调试模式,默认为Attach
  • Attach:此种模式下,调试服务端(被调试远程运行的机器)启动一个端口等待我们(调试客户端)去连接;
  • Listen: 此种模式下,是我们(调试客户端)去监听一个端口,当调试服务端准备好了,就会进行连接。

然后,复制 标注 1,即 IntelliJ IDEA 自动生产的命令行参数,然后导入到 Tomcat 的配置文件中。以 Linux 系统为例,导入语句为:

  • export JAVA_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001'

如果是 Windows 系统,则导入语句为:

  • set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8001

两者的区别在于导入语句的关键字不同以及有无引号,Linux 系统的导入关键字为export,Windows 为set;Linux 的导入值需要用单引号''括起来,而 Windows 则不用。

接下来,修改 Tomcat 的 bin 目录下的catalina.sh文件(如果是 Windows 系统则修改catalina.bat文件),将上述的导入语句添加到此文件中即可:

cata

至此,IntelliJ IDEA 远程调试 Tomcat 的配置已经完成了,调试的后续步骤按正常的调试技巧进行就可以啦!


如果我们的项目是基于 Spring Boot 搭建的,那么上述直接修改 Tomcat 的 bin 目录下的catalina.sh文件就行不通了。但是这时,在部署 Spring Boot 的时候,我们通常要为其写一个启动脚本,我们只需要将上述配置语句添加到 Spring Boot 项目的启动脚本里面,同样可以实现远程调试的目的。例如,

startup


+++++ 题外话:我是一个大彩蛋 +++++

在这里,我们假设服务器的 IP 地址为10.11.12.39,端口号为16203,设置完成后,进入Debug模式,如果连接成功,则会出现如下提示:

5

此外,如果我们是跨多个系统进行调试,则只需要在想要调试的系统中配置Remote,打上断点,启动Debug模式,然后在服务开始的地方执行程序即可进入到我们设置的断点。而且,如果我们在本地配置Remote并关联到某个 Tomcat,在Debug模式下,所有涉及到断点所在代码的功能,都会进入我们设置的断点。

例如,对于服务器上的 Tomcat A,多个系统都用到了这个 Tomcat,如订单子系统、账户子系统、路由子系统等,并且多个系统间互相调用,如订单子系统调了账户子系统,账户子系统又调了路由子系统,则当我们在这三个子系统中配置Remote并在对应的代码(如在订单子系统中查询商户的账户信息,则调到账户子系统;在账户子系统中又通过路由子系统调到其他底层服务查询商户的账户余额等)上打上断点,启动Debug模式之后,通过单元测试或者页面操作触发订单子系统中的查询商户的账户信息功能,则会依次进入到在上述三个子系统中设置的断点。

此外,在我们配置完远程调试之后,就算别人启动相关服务,也会进入到我们的断点,而且会受到我们设置的断点的影响,只有在我们执行完测试之后,服务才会继续执行下去。最后,远程调试的功能真的很强大,善用远程调试,远离 Bug!


———— ☆☆☆ —— 返回 -> 史上最简单的 IntelliJ IDEA 教程 <- 目录 —— ☆☆☆ ————


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

相关文章

Idea设置远程debug

1、在tomcat配置文件 apache-tomcat-8.5.56/bin/catalina.sh 第一行添加以下语句&#xff1a; //12345为远程连接端口&#xff0c;可自己设置 CATALINA_OPTS"-server -Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:transportdt_socket,servery,suspendn,address12345…

使用 IDEA 远程 Debug 调试

背景 有时候我们需要进行远程的debug&#xff0c;本文研究如何进行远程debug&#xff0c;以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 配置 远程debug的服务&#xff0c;以springboot微服务为例。首先&#xff0c;启动springboot需要加上特定的参数。…

利用IDEA的远程debug进行远程代码调试。

经常开发的同学肯定会遇到一个恶心的问题。 MD&#xff01;明明老子本地是正常的&#xff0c;怎么一上测试环境or生产环境就炸崩崩了。 现在我们来配置远程debug&#xff0c;配完以后我甚至再也不喜欢在本地调试了&#xff08;手动斜眼&#xff09; 首先第一步请在linux服务…

Idea进行远程Debug

问题定位&#xff0c;数据追踪&#xff1f;离不开远程Debug&#xff0c;下面让我们来看看那怎么实现远程Debug 第一步、在Idea中创建Remote 点击Edit Configurations--创建Remote 第二步、在服务器中启动项目 原先启动命令&#xff1a; $ java -jar api-gateway-exec.jar …

IntelliJ IDEA远程调试

远程服务DEBUG模式启动 远程服务以debug模式启动需要执行java命令时带上以下JVM参数 java -Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:transportdt_socket,address5005,servery,suspendnaddress指定调试端口&#xff0c;可以按需更改。无论你的服务是普通的java进程&a…

IDEA如何进行远程Debug

1. 问题背景 项目的部署方式有主要有两种&#xff0c;第一种是以本地SpringBoot直接启动或是非SpringBoot的应用在本地应用服务器进行部署&#xff1b;第二种则是将项目在远程服务器部署。一般本地直接启动的项目可以直接进行DEBUG调试&#xff0c;但是在企业内部或是多人协同…

idea远程Debug,远程调试

如果需要进行测试直接跳到第三步进行设置就可以 idea远程Debug&#xff0c;远程调试 一.为什么使用远程Debug二.搭建项目1.项目配置2.打包项目 三.Debug测试1.创建链接2.启动项目3.测试接口 一.为什么使用远程Debug 由于部署环境和本地环境的差异性&#xff0c;在本地运行的好…

IDEA配置远程debug调试

当项目部署到远程服务器上的时候&#xff0c;很多时候会发现在远程服务器上执行的结果与我们在本地的执行结果不一致&#xff0c;因此&#xff0c;为了方便我们部署到远程服务器上和在本地debug调试一直&#xff0c;特需配置远程debug调试。 配置远程debug的条件&#xff1a; …

IDEA tomcat远程调试

最近研究tomcat内存马&#xff0c;但本地不具备代码运行条件&#xff0c;本地dns坏了&#xff0c;本地运行报错&#xff1a; 错误: 代理抛出异常错误: java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: ***-PC: ***-PC 遂尝试远程调…

IDEA如何远程断点调试jar包

1.问题 以jar包的形式运行Spring Boot项目时报错&#xff0c;但是在IDEA开发环境下编译运行Spring Boot项目不报错&#xff0c;如何复现jar包运行时的错误呢&#xff1f;这就需要在IDEA下远程断点调试jar包代码。 2.步骤 将 springboot 项目打成jar包&#xff1b;在IDEA中&a…

Idea Intellij 远程开发调试

一、背景 在构建MiniOB开发环境时需要Linux环境&#xff0c;另外结合分布式系统&#xff0c;利用较好的通信&#xff0c;萌发了远程开发的想法&#xff1b;实际上远程部署、开发在很久之前有过想法&#xff08;大约刚开始学SpringBoot进行部署软件时&#xff0c;反复地本地开发…

IDEA远程debug调试设置

1写作目录 最近发现工作的项目竟然不能本地跑&#xff0c;只能在预发环境测试&#xff0c;那只能远程debug了&#xff0c;所以写个博客记录一下。 2实操 2.1项目启动添加参数 如下所示&#xff0c;配置了一个debug端口8000 java -Djavax.net.debugssl -Xdebug -Xnoagent -…

IDEA远程调试Java代码

文章目录 1 前言2 远程 Debug 调试原理2.1 理论基础2.2 远程调试分类 3 主动连接调试3.1 远程服务中开启 Debug 服务3.1.1 对于 SpringBoot3.1.2 对于 Tomcat 3.2 IDEA 中指定 Debug 服务器3.3 远程服务器防火墙端口放行 4 被动连接调试4.1 对于 Tomcat4.2 对于 SpringBoot 5 开…

IDEA如何开启远程调试

要进行远程调试&#xff0c;首先被调试的服务必须支持远程调试&#xff0c;先要开一个远程调试接口&#xff0c;在启动参数里面增加下面的语句&#xff1a; -agentlib:jdwptransportdt_socket,servery,suspendn,address6001 这主要是指定远程调试的端口&#xff0c;为6001。一…

IDEA 远程调试

IDEA 远程调试&#xff0c;像运行本地代码一样调试远程主机上的程序&#xff0c;以排查远程程序的BUG或代码执行流程。 作者&#xff1a;王克锋 出处&#xff1a;https://kefeng.wang/2018/03/06/idea-remote-debug/ 版权&#xff1a;自由转载-非商用-非衍生-保持署名&#…

IDEA 远程断点调试

IDEA 远程断点调试 有时候&#xff0c;有些bug无法在本地环境复现&#xff0c;此时就需要我们去线上的机器远程debug&#xff0c;可以采用idea Remove JVM Debug模式. 首先&#xff0c;点击Edit Configurations 然后点击左上角的Add New Configuration&#xff0c;选择Remove…

idea实现远程调试

1.项目开启远程调试 在-jar 后面配置 -agentlib:jdwptransportdt_socket,servery,suspendn,address8327 &#xff08;8327是远程调试的端口号&#xff0c;注意不要和项目端口号冲突&#xff09; nohup java -jar -agentlib:jdwptransportdt_socket,servery,suspendn,address8…

IDEA进行远程调试

前言 对于分布式系统的调试不知道大家有什么好的方法。对于我来说&#xff0c;在知道远程调试这个方法之前就是在代码中打各种log&#xff0c;然后重新部署&#xff0c;上线&#xff0c;调试&#xff0c;这样比较费时&#xff0c;有什么更好的办法呢&#xff1f; 有时候&…

idea 远程debug调试

1&#xff0c;远程DEBUG的必要性 由于部署环境的差异性&#xff0c;相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下&#xff0c;生产环境可以采取的手段比较单一&#xff0c;即通过日志的方式获取运行中的环境上下文&…

使用IDEA远程debug调试(一篇懂所有)

使用IDEA远程调试(一篇懂所有) 背景 有时候我们需要进行远程的debug&#xff0c;本文研究如何进行远程debug&#xff0c;以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 配置 远程debug的服务&#xff0c;以springboot微服务为例(springcloud的应该差…