IDEA远程debug服务器上代码

本文介绍如何在本地IDEA上远程调试部署在Linux服务器上的SpringBoot项目。通过在服务器的Tomcat配置文件中添加JDWP参数,指定调试端口,并在IDEA中设置Remote调试连接,实现本地对服务器代码的断点调试。确保本地代码与服务端一致,注意服务器JVM参数可能随Tomcat版本变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在项目中,springboot项目本地运行正常,但部署到服务器上,会出现一些问题,因此想在本地调试服务器上的代码。

运行环境:

  • 服务端:Linux系统
  • 客户端:IDEA

1. 服务端配置

编辑tomcat目录下的bin/catalina.sh,添加以下代码:

  CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7777"

如图所示:
在这里插入图片描述
保存并退出,重启tomcat即可。

注意,7777是指定调试端口,不要和服务器上已使用的端口冲突!

2. 客户端配置

  • 编辑idea启动配置
    在这里插入图片描述
  • 新建一个remote,用来配置
    在这里插入图片描述
  • 指定服务端ip及端口,端口即为服务端配置的7777
    在这里插入图片描述
  • 保存应用,Apply -> Ok
  • debug启动刚刚配置好的remote
    在这里插入图片描述
    Console显示启动成功,现在就可以愉快的在本地打断点调试服务端代码了。

3. 注意事项

  • 本地代码需与服务端代码一致!
  • 服务端jvm 参数根据tomcat版本不同,可能会不一致,具体参考idea给出的提示为准
### 配置IntelliJ IDEA实现对服务器Java应用程序(以JAR形式部署)的远程Debug #### 修改启动命令 为了使服务器上的Java应用程序能够被远程调试,需要修改其启动命令来启用JDWP(Java Debug Wire Protocol)。这可以通过向`java`命令添加特定参数完成。对于一个典型的Spring Boot JAR包,在启动脚本中加入如下选项可以实现在指定端口上等待调试器连接: ```bash nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \ -Duser.timezone=GMT+08 -Dserver_name=${appname} $JAVA_OPT -jar ${jarname} \ --spring.cloud.nacos.discovery.namespace=${namespace} \ --spring.cloud.nacos.config.namespace=${namespace} \ --spring.profiles.active=dev &> ${appname}.log 2>&1 & ``` 注意这里的`address=*:5005`表示允许任何IP地址访问该调试端口[^4]。 #### 创建Remote JVM Debug配置 在本地开发环境中打开IntelliJ IDEA并按照以下步骤创建一个新的Run/Debug Configuration: - **Name**: 输入配置的名字,比如 `Remote Debug`. - **Type**: 选择 `Remote`. - **Host and Port**: 设置主机名或IP以及之前定义好的端口号(这里是`localhost` 或实际服务器 IP 和 `5005`)。 确保勾选了“Allow unsigned applications starting”,如果目标机器的安全策略不允许未签名的应用程序启动的话[^1]。 #### 连接至远程进程 当一切准备就绪之后,点击右上方绿色虫子图标旁边的下拉菜单中的新创建的 Remote Debug configuration 来启动调试会话。此时IDEA将会尝试连接到远端正在运行的服务实例,并允许设置断点、单步执行等功能来进行有效的故障排查工作。 #### 安全性和防火墙考虑 由于开启了网络接口供外部设备接入,因此需要注意网络安全方面的问题。建议仅限于信任环境内部署此功能;另外还需确认云服务商处已开放相应TCP端口以便建立成功握手过程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值