Eclipse、Intellij IDEA远程debug

原理

本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。
被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。
调试程序的本地虚拟机:IDEA 中配置的 Remote Server,指定 Debug 服务器的Host:Port,以供 Debug 客户端程序连接。

服务器端配置

Windows Server(startup.bat启动)

  1. 将Tomcat中的bin目录下的startup.bat启动脚本复制一份到本目录下并且修改名字为startup-debug.bat,然后打开startup-debug.bat文件

再startup-debug.bat文件的最下面找到

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

startup.bat
这句话,将这句话修改为

set JPDA_TRANSPORT=dt_socket
set JPDA_ADDRESS=9000
set JPDA_SUSPEND=n
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%

catilina.bat中第一行添加
备注:修改startup.bat后可以忽略这一步,catilina.bat和startup.bat任意修改一个就行

CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9000"
#这样应也可以(没有测试)
  • 双击运行startup-debug.bat,我们就可以看到tomcat已经在9000端口进行监听。

Windows Server(Tomcat服务启动)

在这里插入图片描述

  • 双击运行Tomcatxw.exe,java→Java Options添加
-Xdebug
-Xrunjdwp:transport=dt_socket,address=9000,server=y,suspend=n
  • 启动Tomcat服务

Linux服务器

catilina.sh中第一行添加

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

配置完成后重启Tomcat(shutdown.sh/startup.sh)

调试端配置

Eclipse远程debug

  • 选中项目右键Dbug As→Dbug Confugurations…
    在这里插入图片描述
  • 选择Remote Java Application→Browse选择需要调试的项目设置参数开始调试
    在这里插入图片描述

Intellij IDEA远程debug

添加启动项的位置Add Configuration选择Remote填好服务器IP和配置的调试端口开始调试
在这里插入图片描述这里解释一下各种参数:
Debugger mode:debugger的模式,有两种:attach和listen。

  • attach的意思是debugger连接到被debug的Java进程,是主动式的。
  • listen的意思是debugger监听由Java进程发送过来的通信,是被动式的。

开始调试

  • 要求:双方代码一致,否则远程调试无法启动;
  • 本地启动刚刚配置的 Remote Server,正常时会看到日志: Connected tothe target VM, address: ‘xxx:5005’, transport: ‘socket’
  • 本地 IDEA代码中设置断点
  • 浏览器或手机 HTTP 访问服务器 IDEA 即可在断点暂停并跟踪

关闭调试

服务器上多开放个端口是不安全的,调试完毕后可恢复防火墙设置。
而 Java 服务器开启 Debug 服务器的功能可以保留,以便之后再次调试。

→→debug操作点这里←←

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值