Java Remote Debug(IDEA实现远程调试)

2023-10-26

前言

介绍:Java Remote Debug指的是"Java远程调试"。特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用。本人就遇到这样一个问题,本地环境运行一切正常,但是部署到服务器就报错,而且问题一直找不到,这时候使用远程调试就方便得多了,便于我们更快的查找出问题。

步骤

废话不多说,直接上教程

1. 本地项目使用Maven工具打包后,将生成的jar包上传到服务器。
2. 启动命令修改为如下,程序就会支持Remote Debug
 nohup java -Djavax.net.debug=ssl -Xdebug -Xnoagent -Djava.compiler=NONE 
 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8080 -jar demo-0.0.1-SNAPSHOT.jar --server.port=8888 
 -spring.profiles.active=test >&1 &

注:
-XDebug 启用调试
-Xrunjdwp 加载JDWP的JPDA参考执行实例。
transport 用于在调试程序和 VM 使用的进程之间通讯。
dt_socket 套接字传输。
server=y/n VM是否需要作为调试服务器执行。
address=8080 调试服务器监听的端口号(等下使用IDEA调试需要用到)。
-suspend=y/n 是否在调试客户端建立连接之后启动 VM 。
--server.port=8888 修改应用程序启动端口号(application.yml中已设置可忽略)
-spring.profiles.active=test 选择不同环境配置文件(如 使用application-test.yml配置文件,没有可忽略)
demo-0.0.1-SNAPSHOT.jar 启动的jar包,修改为自己上传的jar包

3. 程序启动后,在IDEA中配置一下,让它去访问远程的VM

在这里插入图片描述
添加配置Remote:
在这里插入图片描述
点击debug运行:
在这里插入图片描述
控制台输出如下说明连接成功:
在这里插入图片描述

若连接失败:
  • 1.请使用telnet 192.168.20.64:8080 命令查看是否成功 (ip为jar包运行环境地址,端口为启动命令address地址)
  • 2.telnet若失败,使用netstat -nltp命令在服务器(jar包运行环境)执行,查看address配置的端口信息;在Local Address列我们看到了端口信息,若显示的ip为0.0.0.0:8080 (表示telnet是ip只要为服务器任一ip都可以,但是一般来说只有一个,不排除多网卡的情况),若显示localhost:8080则需要修改debug启动命令address=8080address=192.168.20.64:8080 (ip为jar包运行环境ip)
    在这里插入图片描述
4. 打断点调试

我们可以在IDEA本地文件中打断点进行调试:
在这里插入图片描述

5.防止断点把VM挂起
  • 提示:idea 的断点默认会挂起整个 VM , 这样一来,任何一个线程进入断点都会导致所有的请求(其他没打断点的请求)被阻塞。这样有可能影响测试环境的正常使用。
  • 解决方案:打完断点后,使用鼠标右键单击红点,将 Suspend 设置为 Thread,最后再点击一下 Make Default 设置为默认。以后有需求可以再改回来。

在这里插入图片描述

参考博客:
https://segmentfault.com/a/1190000012930393
https://blog.csdn.net/qq_37192800/article/details/80761643

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

Java Remote Debug(IDEA实现远程调试) 的相关文章

随机推荐

  • replaceAll遇到特殊字符无法替换问题的坑

    问题 当出现 或者 或者 符等 会导致 无法替换 在一定程度上 这个也算是 一个坑吧 问题原因 replaceAll支持正则 出现正则的符号 就会被当作是正则 从而无法正常替换 解决办法 网上有一个解决方案 是采用 Matcher quot
  • JetBrains IDEA 的安装与设置

    为什么80 的码农都做不了架构师 gt gt gt JetBrains Toolbox 下载 安装 配置 JetBrains IDEA 下载 安装 配置 JetBrains Toolbox 下载 安装 官方下载地址 https downlo
  • MyBatisPlus条件查询的三种格式于null判定

    DQL编程控制 条件查询 MyBatisPlus将书写复杂的SQL查询条件进行了封装 使用编程的形式完成查询条件的组合 方式一 使用QueryWrapper查询数据 lt是小于的意思 price是数据表的字段名称 price容易写错 不推荐
  • VQGAN2_latent diffusion model

    task1 txt2image 先根据config一层层调用 先是ldm models diffusion ddpm LatentDiffusion 里面super init conditioning key conditioning ke
  • SPI协议详解(Standard SPI、Dual SPI和Queued SPI)

    1 标准SPI 1 1 SPI接口的引脚 1 SCLK 时钟线 2 MOSI master output slave input 主设备输出 从设备输入 单向传输 3 MISO master input slave output 主设备输入
  • 查找算法--二分查找 c++实现

    二分查找也称折半查找 Binary Search 它是一种效率较高的查找方法 但是 折半查找要求线性表必须采用顺序存储结构 而且表中元素按关键字有序排列 vs2017 include
  • Docker学习--Docker仓库之Docker Hub的简单了解

    Docker之所以能这么快的火起来 和Docker Hub的作用是分不开的 Docker构建了像GitHub一样的仓库 用来存放大家构建好的Docker镜像 其中已经包括了15000的镜像 大部分需求 都可以通过在Docker Hub中直接
  • npm不是以管理身份运行遇到的问题

    环境 win10 npm3 10 5 问题 在npm install lodash时 出现下列错误 npm debug log 文件内容 0 info it worked if it ends with ok1 verbose cli C
  • 性能测试相关术语

    性能测试相关术语 一 负载 模拟业务操作对服务器造成压力的过程 比如模拟100个用户发帖 二 性能测试 Performance Testing 模拟用户负载来测试系统在负载情况下 系统的响应时间 吞吐量等指标是否满足性能要求 三 负载测试
  • Makefile = 、:=、?=的区别

    相当于 c 语言中的 预编译的过程 在真正解释Makefile前会先将对应的 号左边的量替换成右边的量 而 则是跟 宏观的 号相似 是简单赋值的运算符号 下面举个例子就可以清楚的知道它们之间有何不同 cross arm linux cc c
  • 开关电源怎么测试文波_为什么开关电源需要测试动态响应

    1 导读概念动态响应一般是指控制系统在典型输入信号的作用下 其输出量从初始状态到最终状态的响应 对某一环节 系统 加入单位阶跃输入x t 时 其响应y t 开始逐渐上升 直到稳定在某一定值上为止 响应y t 在达到一定值之前的变化状态称为过
  • 直播分发选低延迟 RTC 还是 CDN?

    简单来看 一个完整的直播应用实现原理是 主播端采集音视频 推到服务器 再由服务器分发给观众观看 主播端负责推流 需要配置选用 RTC 链路分发直播画面或者用 CDN 链路分发 如果涉及连麦还需要考虑如何做 MCU 合流 观众订阅合流的好处是
  • python 读取配置文件config_python学习-读写配置文件-ConfigParse用法

    一 读取配置文件 config ini read filname 读取文件内容 section 获取所有section 返回list options section 获取该section所有options 返回list items sect
  • IDEA + SSH OA 第一天(Hibernate : Mapping (RESOURCE) not found)

    切入主题 看看今天的错误是如何发生的 首先这是我的项目路径 java 是 Sources Root resources 是 Resources Root 放了所需要的配置文件 其中 Hibernate 的配置 显示的是绿色 说明没有问题 在
  • Java基础知识-Map

    1 Map体系 2 各实现类说明及区别 3 哈希映射技术 哈希映射技术是一种就元素映射到数组的非常简单的技术 由于哈希映射采用的是数组结果 那么必然存在一中用于确定任意键访问数组的索引机制 该机制能够提供一个小于数组大小的整数 我们将该机制
  • Windows和Ubuntu下Firefox账号不能同步的解决办法

    最近开始用Ubuntu系统发现一个问题 我在Ubuntu系统自带的或者软件中心下的Firefox版本下创建一个账号 再在Windows的Firefox下登录发现此账号不存在 原因是Firefox有个全球服务和本地服务 Ubuntu下的Fir
  • vscode c++安装与单文件多文件编译配置(win10)

    vscode c 安装与单文件多文件编译配置 win10 总体思路 1下载Vscode mingw cmake 用于多文件编译 2配置 1 gt mingw vscode cmake环境变量 2 gt vscode 插件Chinese co
  • Redis多线程与ACL

    Redis是单线程吗 Redis 的单线程主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的 这也是 Redis 对外提供键值存储服务的主要流程 但 Redis 的其他功能 比如持久化 异步删除 集群数据同步等 其实是由额
  • JS中正则表达式常用语法总结

    目录 一 正则表达式的创建 二 的区别 三 和 四 d s w 五 六 test match 七 支持正则表达式的 String 对象的方法 一 正则表达式的创建 JS正则的创建有两种方式 new RegExp 和 直接字面量 使用RegE
  • Java Remote Debug(IDEA实现远程调试)

    前言 介绍 Java Remote Debug指的是 Java远程调试 特别是当你在本地开发的时候 你需要调试服务器上的程序时 远程调试就显得非常有用 本人就遇到这样一个问题 本地环境运行一切正常 但是部署到服务器就报错 而且问题一直找不到