如何使用IDEA编辑器,调试远程Java代码?
众所周知使用IDEA开发时可以通过debug进行调试并快速定位问题,但是如果代码已发布到远程服务器上,该如何调试呢?本文将告诉你如何利用IDEA调试远程服务器上的代码
本文会先讲如何配置参数、调试,然后讲各项参数的含义,最后讲注意事项。各位在尝试过程中不需要担心这个没看懂,那个是为什么,只需要跟着做就行了。假如看完整篇文章后还有疑问,可以在留言区提问
配置本地参数
打开IDEA的 “Run/Debug Configurations” 选项,配置远程服务器的IP和端口,如下
红框中的内容暂时不用管,下一步才会用到在绿框中的第一个输入框中输入远程服务器的ip,第二个输入框中输入远程服务器的端口
配置远程服务器参数
登录远程服务器,打开tomcat的bin文件夹下catalina.sh的文件进行编辑,加入如下配置
export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8185'
以上配置的等号后面的参数来自于第一步红框中的内容。
大多数情况下,使用红框中的第一个输入框的内容作为参数如果远程服务器上的jdk是1.4版本的,则使用红框中的第二个输入框的内容作为参数如果远程服务器上的jdk是1.3版本的,则使用红框中的第三个输入框的内容作为参数
调试
启动第一步配置好的IDEA服务,在要调试的代码上打上断点,当远程服务器上的程序被访问时就会进入到断点中,这时就可以愉快的调试了
启动IDEA服务点击如下按钮
IDEA启动成功后,控制台输出如下内容
参数解释
下图是第一步配置时的截图,我们来逐一解释以下各个参数的含义
先说绿框中的参数
Transport是IDEA和远程服务器的通讯方式,如果远程服务器是linux或macos则选择socket,如果远程服务器是windows则选择Shared memory 。
Debugger mode的可选项有Attach和Listen。Attach表示服务端启动后等待IDEA去连接;Listen表示IDEA监听服务端的端口,等服务端准备好时会建立连接,此种方式要求服务端能ping通本地电脑的ip。通常使用Attach模式。
Host是远程服务器的ip,Port是远程服务器的端口。
再说红框中的参数
红框中的参数不允许手动修改,它跟着绿框中参数的修改而发生变化。
-Xrunjdwp:通知JVM使用jdwp(java debug wire protocol)来运行服务器代码transport的值可选dt_socket和dt_shmem,分别对应绿框中的Socket和Shared memoryaddress对应绿框中的Port,是远程服务器的端口
注意事项
1. 远程服务器上的端口必须没有被占用,并且可以被本地访问到,可以通过telnet测试,如:telnet 远程ip 远程端口
2. 远程服务器上部署的代码必须和本地的源代码保持一致,否则断点无法进入
3. 配置远程服务器时,如果JAVA_OPTS参数在catalina.sh中已经存在,则只需要把要配置的参数追加到后面就行 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)