Springboot程序开启远程DEBUG方式

 更新时间:2026年05月09日 10:51:05   作者:Nvr:4ever  
本文介绍了SpringBoot程序远程debug的原理和步骤,包括在启动时指定JVM参数、配置远程调试、注意事项等,同时提供了配置本地和远程调试的方法和示例,需要注意避免生产环境中开启远程debug,保护调试信息的安全性和一致性,限制调试范围,避免资源占用问题

一、远程debug的原理

Spring Boot程序远程debug的原理主要是通过在启动时指定JVM参数来启用远程调试模式,并在调试器中连接到程序所在的调试地址,从而实现对程序的远程调试。

具体步骤如下:

  • 在运行Spring Boot程序时,在启动命令的JVM参数中指定远程调试的相关配置,比如指定调试端口和允许远程连接等参数,例如:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7005
  • 启动Spring Boot程序后,程序会监听指定的调试端口,并等待调试器连接。
  • 在调试器中创建一个远程调试配置,配置连接到程序所在的服务器和指定的调试端口。
  • 连接成功后,调试器就可以通过远程连接对程序进行调试,包括设置断点、查看变量值等操作。

Tips: 需要注意的是,为了避免远程调试带来的安全风险,建议在生产环境中禁用远程调试功能。

二、Springboot程序开启远程Debug

1、在应用配置(Application Config)中选择编辑配置(Edit Configuration)

2、然后选择添加新配置(Add New Configuration)

3、在展开的列表中选择远程 JVM 调试(Remote JVM Debug),点击确定

4、根据图中示例配置。

  • 名称可以随意起;
  • 主机地址即远程的公网IP地址;
  • 端口是指的远程Debug监听端口,而非该项目的服务端口;
  • JDK选择项目开发对应的JDK版本号;
  • 远程JVM的命令行参数在配置完成以后拷贝下来;
  • 模块类路径即选择主程序包路径。

5、利用Maven将项目打包 mvn clean package,放到远程主机上,携带刚刚拷贝的启动参数启动项目,例如:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=7005 -jar ******.jar

6、启动本地调试,监听远程端口

当控制台打印“已连接到目标”,说明本地项目已经开始监听远程端口,此时可以开始远程Debug了

7、在本地代码打上断点,使用postman访问远程接口

8、观察到Debug信息进入到本地,说明配置成功了。

三、注意事项

  • 在生产环境中不建议开启远程debug: 开启远程debug会增加程序的额外开销,包括网络开销和调试信息的生成,还会造成接口阻塞。
  • 调试信息的保护: 调试信息中可能包含敏感信息,如密码、私钥等,需要仔细过滤或禁止传递这些信息。特别是在使用公共网络时,要注意调试信息的保护和加密。
  • 调试客户端和服务端的一致性: 调试客户端和服务端必须保持一致,包括调试器的版本、JDK的版本和框架的版本等。否则可能会导致不可预期的问题。
  • 调试范围的限制: 开启远程debug时,要明确授权访问权,限制调试的范围,避免潜在的安全风险。
  • 资源占用问题: 调试信息的生成和传输可能会占用大量的资源,包括CPU和内存等,如果不加注意可能会影响程序的正常运行

综上所述,使用远程debug需要慎重考虑,仅在必要时才应该使用,并且要严格控制权限和范围,避免潜在的安全风险。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mybatis取别名typeAliases标签的位置放错导致报错的解决

    mybatis取别名typeAliases标签的位置放错导致报错的解决

    这篇文章主要介绍了mybatis取别名typeAliases标签的位置放错导致报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java中Map遍历的九种方式汇总

    Java中Map遍历的九种方式汇总

    这篇文章主要介绍了Java中九种 Map 的遍历方式汇总的相关资料,需要的朋友可以参考下
    2022-11-11
  • 使用Java实现在PDF插入页眉页脚

    使用Java实现在PDF插入页眉页脚

    在处理PDF文档时,有时需要为文档中的每一页添加页眉和页脚,这篇文章主要为大家详细介绍了如何使用Java为PDF文件添加页眉、页脚,感兴趣的可以了解下
    2024-03-03
  • IDEA2023.1.3安装教程及下载(图文)

    IDEA2023.1.3安装教程及下载(图文)

    最新变化是在IDEA 2023.1中,对新UI做出了大量改进,本文主要介绍了IDEA2023.1.3安装教程及下载,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Springboot内嵌SQLite配置使用详解

    Springboot内嵌SQLite配置使用详解

    这篇文章主要介绍了Springboot内嵌SQLite配置使用详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • SpringBoot整合JDBC的实现

    SpringBoot整合JDBC的实现

    这篇文章主要介绍了SpringBoot整合JDBC的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • springboot 基于Tomcat容器的自启动流程分析

    springboot 基于Tomcat容器的自启动流程分析

    这篇文章主要介绍了springboot 基于Tomcat容器的自启动流程分析,Spring通过注解导入Bean大体可分为四种方式,我们主要来说Import的两种实现方法,需要的朋友可以参考下
    2020-02-02
  • mybatis中${}和#{}的区别以及底层原理分析

    mybatis中${}和#{}的区别以及底层原理分析

    这篇文章主要介绍了mybatis中${}和#{}的区别以及底层原理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • java中对象和JSON格式的转换方法代码

    java中对象和JSON格式的转换方法代码

    JSON格式可以轻松地以面向对象的方式转换为Java对象,下面这篇文章主要给大家介绍了关于java中对象和JSON格式的转换方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • java迭代器原理及迭代map的四种方式

    java迭代器原理及迭代map的四种方式

    本文我们将了解一下java迭代器原理及其在Java中迭代Map各种不同方法。具有一定的参考价值,感兴趣的可以了解一下
    2021-09-09

最新评论