Springboot程序开启远程DEBUG

2023-11-16


一、远程debug的原理


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

具体步骤如下:

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

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


二、Springboot程序开启远程Debug


  1. 应用配置(Application Config)中选择编辑配置(Edit Configuration)
    在这里插入图片描述

  2. 然后选择添加新配置(Add New Configuration)
    在这里插入图片描述

  3. 在展开的列表中选择远程 JVM 调试(Remote JVM Debug),点击确定
    在这里插入图片描述


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

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

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

  1. 启动本地调试,监听远程端口
    在这里插入图片描述
    当控制台打印“已连接到目标”,说明本地项目已经开始监听远程端口,此时可以开始远程Debug了
    在这里插入图片描述

  1. 在本地代码打上断点,使用postman访问远程接口
    在这里插入图片描述
    在这里插入图片描述

  1. 观察到Debug信息进入到本地,说明配置成功了。
    在这里插入图片描述

三、注意事项

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot程序开启远程DEBUG 的相关文章

  • 将所有 BigDecimal 运算设置为特定精度?

    我的Java程序以高精度计算为中心 需要精确到至少120位小数 因此 程序中所有非整数都将由 BigDecimal 表示 显然 我需要指定 BigDecimal 的舍入精度 以避免无限小数表达式等 目前 我发现必须在 BigDecimal
  • 在 Java 8 中将对象追加到列表并返回结果?

    有没有一种方法可以将对象附加到列表并以功能性非命令方式在一行中返回结果 如果原始列表也不应该被改变 你会怎么做 Java 8 是允许的 我已经知道如何将两个列表连接到一行中 Source https stackoverflow com a
  • Junit Mockito 测试一切

    我现在正在寻找更多时间但没有结果 请帮忙 这是我要测试的课程 public class DBSelectSchema extends Database private static final Logger LOG Logger getLo
  • 使用Java获取CSS文件中图像的URL?

    我正在尝试使用 Java 获取远程 CSS 文件中图像 所有 MIME 类型 的 URL 我正在使用 jsoup 来获取 css 的 URL 经过无数个小时的观看CSS解析器 http cssparser sourceforge net 由
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • 向 JList 添加滚动条? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何将 JList 添加到 JScrollPane 把你的JList in a JScrollPane JScrollPane scrol
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • 使用 Hibernate 和 Apache DBCP 的 MySQL 连接池问题

    看来我的应用程序有问题 当应用程序在启动后闲置很长时间 我不确定确切的时间 时 我会在日志中收到以下错误消息 我使用 Spring Hibernate MySQL 和 ApacheDBCP 进行连接池 ERROR org hibernate
  • 到底什么是哈希冲突

    HashMap 中的哈希冲突或哈希冲突并不是一个新主题 我遇到过几个博客和讨论板 以模糊且详细的方式解释如何产生哈希冲突或如何避免它 我最近在一次采访中遇到了这个问题 我有很多事情要解释 但我认为很难准确地给出正确的解释 抱歉 如果我的问题
  • 解密 TLS 1.2 AES-GCM 数据包

    我正在开发一个 Java 程序来解密TLS 1 2正在使用的会话TLS RSA WITH AES 128 GCM SHA256密码 我使用wireshark 录制了一个测试会话 这大师秘密是已知的 No Time Protocol Leng
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • 如何知道 glassfish 是什么 - 完整平台或网络配置文件?

    我已经安装了glassfish 我可以跑 asadmin version 它显示了它是什么版本 但如何知道它是 完整平台 还是 Web 配置文件 你可以使用 glassfish4 bin gt asadmin list containers
  • Java检测鼠标长按

    如果用户按下 JList 组件超过 3 秒 有什么方法可以捕获事件吗 我发现困难的部分是即使在用户松开鼠标左键之前也需要触发事件 这可以通过 mousePressed 和 mouseReleased 组合轻松完成 您可以在 mouseDow
  • 在 JavaFX 中更改 ListView 字体大小

    我想知道如何更改 JavaFx 中的列表视图项目文本字体大小 每行文本的大小会有所不同 我尝试使用细胞因子属性 但我不知道如何使用它 有人可以帮我吗 类似的问题在这里 如何更改JavaFX中ListView的字体大小 https stack
  • 将 XML 从网站解析到 Android 设备

    我正在启动一个 Android 应用程序 它将解析来自网络的 XML 我创建了一些 Android 应用程序 但它们从未涉及解析 XML 我想知道是否有人对最佳方法有任何建议 这是一个例子 try URL url new URL your
  • Visual Studio Code - Java 类路径不完整。只会报告语法错误

    在使用 python 获得了丰富的经验之后 我正在使用 java 迈出第一步 我正在运行的脚本是一个简单的 Java Swing Gui 它可以从命令行和 VS Code 中正常编译和运行 为了设置 java 调试环境 我使用 github
  • Java XML 解析器添加不必要的 xmlns 和 xml:space 属性

    我在 Windows 10 上使用 Java 11 AdoptOpenJDK 11 0 5 2019 10 15 我正在解析一些旧版 XHTML 1 1 文件 这些文件采用以下一般形式
  • 有没有办法处理Java堆空间异常[重复]

    这个问题在这里已经有答案了 我正在寻找将文件输入流转换为大文件 文件大小为 100MB 并且抛出 java lang OutOfMemoryError Java Heap space import java io FileInputStre
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • Java 中 .NET 的 Lambda 表达式

    我最近 再次 从 C 迁移到 Java 但我非常怀念 lambda 表达式和 C 的 IEnumerable Foreach 之类的东西 所以我正在寻找Java中的lambda表达式库 有比这更好的图书馆吗LambdaJ http code

随机推荐

  • CMOS图像传感器OV7740数据手册

    下载地址 阿里云盘分享https www aliyundrive com s 4GXdCkz9mvG
  • git从已有分支拉一个自己的开发分支

    第一步 切换到被copy分支 并且当前分支必须要保持是最新代码 git checkout 被copy分支 git pull 第二步 从当前分支拉开发分支 git checkout b 自己的分支名称 如下 tengxiao ma SJ DN
  • 微信小程序的常用组件

    目录 一 常用的视图容器类组件 view scroll view swiper 和 swiper item 二 常用的基础内容组件 text rich text 三 其它常用组件 button image navigator 一 常用的视图
  • 启动tomcat服务器,为何要配置CATALINA_HOME和JAVA_HOME ?

    问题 win10系统 本地安装jdk 配置环境变量 是将jdk的bin目录 笔者本地目录为 E JavaTools jdk1 8 0 131 bin 直接配置到系统变量path中 cmd执行java javac都正常 认为jdk安装配置没有
  • vue中运行项目自动打开浏览器失败

    问题 在package json文件中设置 open后自动打开失败 失败 失败后跳转到浏览器中 解决方法 在vue config js中将原先的代码替换成如下代码并保存后 重新编译就ok了 const defineConfig requir
  • 2018-CVPR-NVIDIA-Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Inte

    基于光流反向变换的框架 第一部分是双向光流估计 第二部分是进行中间帧的合成 采用了stacking的思想 将光流的估计分成两个阶段 第一阶段是粗估计 第二阶段再进行精调 从而来改善图像的生成效果 此外第二阶段还要估计出掩膜权重 参考 htt
  • ubuntu初次使用笔记

    环境 win7 vmware10 ubuntu13 10 1 上网配置 一般只要装上虚拟机 安装ubuntu之后 选择桥接模式联网即可 但是 也有可能出现奇怪的问题 那么看以下设置 假设ubuntu联网方式设置为NAT NAT和桥接模式的区
  • IT自由职业者的成功秘诀

    原文作者Greg Jorgensen是一位典型的程序员 他从1974年开始编程 曾在耐克和苹果等公司任职 他专攻修复和完善受损 被遗弃和 半生不熟 的Web应用程序 尤其是后台语言是PHP的网站 我从事自由职业已有十余年了 有时候在我有全职
  • Python 日期、时间处理、时间戳转换、获取年份、月份、日、星期几、小时、分钟、秒

    引入 time 模块 import time 获取当前时间戳 unix timestamp current time time print unix timestamp current 1596594152 331776 格式化时间 fmt
  • Uncaught (in promise) TypeError: Cannot set properties of undefined (setting ‘type‘) at main_Mes

    vue项目报错解决办法 删掉 Message 就好了
  • 内网通过计算机名查询IP地址

    计算机环境 win10 内网 已知计算机名为 DESKTOP 40BB7CS 查询计算机IP地址 nbtstat a DESKTOP 40BB7CS 结果 以太网 节点 IP 址址 10 9 54 37 范围 ID NetBIOS 远程计算
  • Latex Picture And Table Setting

    Four Picture in one column begin figure htb begin minipage b 48 linewidth centering centerline includegraphics width 4 0
  • C++11常用新特性汇总

    感谢博主的分享 转载自 http www cnblogs com feng sc p 5710724 html C 11已经出来很久了 网上也早有很多优秀的C 11新特性的总结文章 在编写本博客之前 博主在工作和学习中学到的关于C 11方面
  • java字符串定长前面填充0

    Java中在数字前自动补零方法 public class TestTest public static void main String args 方法一 0 代表前面补充0 4 代表长度为4 d 代表参数为正数型 System out p
  • System V 共享内存

    System V 共享内存 共享内存是什么 如何使用共享内存 ftok shmget shmat shmdt shmctl 共享内存的原理 共享内存实现两个进程间通信 共享内存的特点 共享内存与管道配合使用 两个进程间通信 多个进程间通信
  • CentOS 7安装谷歌浏览器Chrome失败

    问题描述 CentOS 7安装谷歌浏览器Chrome失败 安装上但是点击图标加载但是打不开 谷歌官网下载地址 https www google cn intl zh CN chrome 初步解决 起初我也去搜索了别的博主分享的问题与解决方法
  • linux怎么进入etc目录,Linux 系统的/etc目录

    etc目录下的重要文件 etc sysconfig network 指定服务器上的网络配置信息 etc rc d init d network 网络配置脚本信息 网络配置脚本 开机经过脚本文件来读取相应的配置文件 提供初始化设置 经过 et
  • Origin 2017 给曲线加标记符号

    最近在用Origin 2017画曲线图 需要给图像得曲线加上不同得标记符号用以区分 把操作步骤记录下来 免得忘了 1 用Origin 2017打开一个曲线图 在任意一条曲线上点击右键弹出菜单 选择 绘图更改为 选择 点线图 2 选择之后 可
  • myeclispe

    1 快捷键 ctrl alt h 查哪里调用该方法 ctrl o直接查方法 Ctrl Shift F格式化代码 ctrl f 当前页面快速搜索 ctrl shift r全局搜索类或者 xml文件等 ctrl h file search 全局
  • Springboot程序开启远程DEBUG

    一 远程debug的原理 Spring Boot程序远程debug的原理主要是通过在启动时指定JVM参数来启用远程调试模式 并在调试器中连接到程序所在的调试地址 从而实现对程序的远程调试 具体步骤如下 在运行Spring Boot程序时 在