idea springboot远程debug的操作方法
作者:Jyannis 发布时间:2022-11-01 00:04:31
Remote Debug 综述
当我们的后台项目部署到服务器上时,由于环境和本地不同,有时候也会有一些奇奇怪怪的问题出现。只依赖服务器上的日志来诊断可能太不灵活,这时就需要我们进行远程调试。
在开始我们的步骤前,先确认一点:
我们现在是希望能够在本地远程调试服务器上的程序,也就是说:
本地 = 调试者
服务器 = 被调试者
而且还有一点我们需要注意,就是在调试远程服务器上的代码时,一定要保证 远程服务器 上的代码和 本地 代码一致,不然就失去debug效果了。
First Step 本地配置远程服务 在本地,打开我们的idea,在运行窗口上点击 Edit Configurations…
会看到新跳出来一个窗口,点击左上角 ‘+' 号,选择 Remote
填入相关信息
这样就算是做好了我们本地的远程debug配置。
这里补充一个小tip:
这里设置的8002端口是监听端口,读者也可以修改为自己想要的端口。
但是要注意,监听端口和启动端口必须不同。
也就是服务器上项目启动的端口,要和你现在设置的这个监听端口不一样。
先别急着把这个界面关掉,我们把这一段内容复制下来:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8002
Second Step 服务器以远程监听方式启动
打开我们的Xshell(或其他SSH工具)连接上我们的远程服务器。
启动时,我们将过去的java -jar xxx.jar
命令给替换成:
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8002 xxx.jar
但如果我们的远程服务器是阿里云、腾讯云等云服务商的云服务器,我们可能需要像下面这样改:
指定我们开放的ip,确保不会被默认设置为127.0.0.1:8002导致外部无法访问进来。
java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:8002 xxx.jar
回车启动,会看到下面的字样,就说明成功监听了:
Listening for transport dt_socket at address: 8002
Third Step 在本地调试
点击debug
可以看到控制台中显示出了以下字样,说明连接成功。
Connected to the target VM, address: '{ip}:8002', transport: 'socket'
然后就可以像调试本地程序一样打断点调试了~
来源:https://blog.csdn.net/m0_46311226/article/details/108957070
猜你喜欢
- 正则表达式是一种描述词素的重要表示方法。虽然正则表达式并不能表达出所有可能的模式(例如“由等数量的 a 和 b 组成的字符串”),但是它可以
- 1.设置url-pattern为*.do(最为常见的方式)只要你的请求url中包含配置的url-pattern,该url就可以到达Dispa
- Java基础将Bean属性值放入Map中的实例利用发射将Java对象的属性值以属性名称为键,存储到Map中的简单实现。包括自身属性及从父类继
- Java7引入了Fork Join的概念,来更好的支持并行运算。顾名思义,Fork Join类似与流程语言的分支,合并的概念。也就是说Jav
- 前言:sleep 方法和 wait 方法都是用来将线程进入休眠状态的,并且 sleep 和 wait 方法都可以响应 interrupt 中
- 1.位置:如下:如果没有则在相同位置新建一个2. 添加端口号,修改:如图server.port=8080启动项目就会发现端口号已经成为你刚才
- 1,添加依赖在project的build.gradle文件中添加dependencies { classpath 'co
- 废话开篇:iOS与android在实现列表界面的时候是有重用机制的,目的就是减少内存开销,用时间换空间。个人感觉flutter并没有特别强调
- 前言作为大数据家族中的重要一员,在大数据以及海量数据存储方面,hbase具有重要的地方,本篇将从java对hbase的操作上,进行详细的说明
- /** * 三角数字: * 比达哥斯拉领导下的古希腊数学家发现了一个有趣的数字序列1, 3, 6, 10, 15, 21,... *
- 通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了。
- 简介happens-before是JMM的核心概念。理解happens-before是了解JMM的关键。1、设计意图JMM的设计需要考虑两个
- 方式一:if语句控制// 例如:Column( mainAxisAlig
- 我已经很精简了,两篇(Spring Boot启动过程(一)、spring Boot启动过程(二))依然没写完,接着来。refreshCont
- Pom依赖<parent> <groupId>org.springframework.bo
- 本文实例讲述了Android实现的数字格式化用法。分享给大家供大家参考,具体如下:package formatnumber;import j
- 使用HTTPclient访问url获得数据最近项目上有个小功能需要调用第三方的http接口取数据,用到了HTTPclient,算是做个笔记吧
- 本文实例讲述了Java统计字符串中字符出现次数的方法。分享给大家供大家参考,具体如下:package com.wenzhi;import j
- 一、问题重现1.配置文件spring: #DataSource数据源 datasource: &nbs
- 一、什么是抽象工厂模式为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。抽象工厂模式是所有形态的工厂模式中最为抽象和最具