1,远程DEBUG的必要性 
 
由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况。一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取运行中的环境上下文,分析日志文件并尝试重现bug。这会带来的问题还是不少的,首先,日志的分析是一项比较耗时的工作;其次,现有的日志记录不一定能反映出问题,你可能需要多次重复这个过程(分析日志->猜测问题->加日志->部署->获取日志)来慢慢逼近问题。倘若是测试环境,我们还多了一项可供选择的手段——远程调试——将程序在测试环境中以debug模式启动,在本机使用IDEA在工程中设置断点进行调试。 
2,IDEA构建SpringBoot测试Demo 
 
新建SpringBoot测试项目remote-debug,只需要web依赖支持即可;版本选用2.2.6.RELEASE(注意,别用2.5.1版本,有坑,亲测) 
pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.java1234</groupId><artifactId>remote-debug</artifactId><version>v1.0</version><name>remote-debug</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

简单搞个TestController,提供一个Rest接口

package com.java1234.controller;import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {@PostMapping("/test")public String test(Integer id,String name){System.out.println("id="+id);System.out.println("name="+name);if(id>0){return "success "+name;}else{return "fail";}}}

我们启动项目,用postman测试下: 
测试接口:http://localhost/test 加入Body form-data 参数 id=1,name=marry,Send 测试,返回 success marry,测试OK; 
 
3,测试Demo项目配置支持远程调试 

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n</jvmArguments></configuration></plugin></plugins>
</build>

加了此配置后,打包后的项目发布服务器,可支持远程DEBUG; 
具体参数详解: 
-Xdebug 通知JVM工作在DEBUG模式下; 
-Xrunjdwp 通知JVM使用(Java debug wire protocol)运行调试环境。该参数同时包含了一系列的调试选项; 
**transport **指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台; 
address 调试服务器的端口号,客户端用来连接服务器的端口号; 
server=y/n VM 是否需要作为调试服务器执行; 
suspend=y/n 是否在调试客户端建立连接之后启动 VM; 
4,IDEA打包jar 
 
我们打包jar包; 

 
打包后,在target目录下,会生成一个jar包;我们把它复制出来即可; 

5,启动jar并且带启动参数支持远程调试 
 
我们把remote-debug-v1.0.jar放D盘根目录; 
我们启动jar,并且支持远程DEBUG; 
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-debug-v1.0.jar

启动OK,监听socket 5005端口 
6,IDEA远程DEBUG配置 
 
IDEA要进行远程DEBUG,需要进行配置; 
1,启动项下拉,选择 Edit Configurations...编辑配置

 
2,点击+,选择Remote,添加远程DEBUG配置


3,添加远程DEBUG配置项,Host和Port,配置后,点击Apply和OK按钮 
 

7,IDEA远程DEBUG测试 
 
1,打测试断点 
我们直接在TestController类里的test方法上打点断;


2,选择远程debug启动项,然后点击测试调试按钮启动;


3,postman测试 
 
4,成功进入断点 
 
我们走完断点; 
5,启动的jar包打印信息,测试OK

idea 远程debug调试相关推荐

  1. openstack windows下远程debug调试(komodo)

    2019独角兽企业重金招聘Python工程师标准>>> 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如有转载,请保留源作者博客信息. Be ...

  2. IntelliJ IDEA远程debug调试

    IntelliJ IDEA远程debug调试 IntelliJ IDEA远程debug调试 解决痛点: 排查线上bug log日志埋点不准确,告别屡次打包部署cycle 前提: 本地代码必须与远程代码 ...

  3. IDEA配置远程debug调试

    当项目部署到远程服务器上的时候,很多时候会发现在远程服务器上执行的结果与我们在本地的执行结果不一致,因此,为了方便我们部署到远程服务器上和在本地debug调试一直,特需配置远程debug调试. 配置远 ...

  4. 如何使用idea远程debug调试代码详解

    目录 一.idea远程debug原理 二.创建一个springboot工程 三.IDEA远程调试配置 四.服务端开始debug模式 五.idea启动远程调用 六.启动远程调试参数解释 一.idea远程 ...

  5. pycharm连接云端服务器后实现远程debug调试

    目录 1. 情况说明 2.具体实现措施,举例说明 (1) 准备工作 (2)具体实施 3. debug 调试 1. 情况说明 我的情况是通过pycharm连接云端服务器,然后实现代码的pytorch分布 ...

  6. 使用 IDEA 远程 Debug 调试

    背景 有时候我们需要进行远程的debug,本文研究如何进行远程debug,以及使用 IDEA 远程debug的过程中的细节.看完可以解决你的一些疑惑. 配置 远程debug的服务,以springboo ...

  7. 使用IDEA远程debug调试(一篇懂所有)

    使用IDEA远程调试(一篇懂所有) 背景 有时候我们需要进行远程的debug,本文研究如何进行远程debug,以及使用 IDEA 远程debug的过程中的细节.看完可以解决你的一些疑惑. 配置 远程d ...

  8. postman测试远程服务器,远程debug调试入门

    1.远程DEBUG的必要性 由于部署环境的差异性,相信很多朋友都碰到过开发环境正常测试过的功能在测试环境甚至生产环境下出现bug的情况.一般情况下,生产环境可以采取的手段比较单一,即通过日志的方式获取 ...

  9. Java远程DEBUG调试教程

    背景 在日常的开发工程中可能需要排查线上Bug,此时远程DEBUG就发挥用处了,前提是保持远程和本地的代码版本是一致的. 原理 Java程序经过编译后的字节码是运行在JVM上的,通过JDWP将其和代码 ...

最新文章

  1. PyTorch之深入理解list、ModuleList和Sequential。
  2. Android入门:实现一个File存储的辅助类
  3. Wireshark 【OSI三层】抓包过滤规则和显示过滤规则实例
  4. java 树 右键菜单_VUE实现Studio管理后台(八):用右键菜单contextmenu,编辑树形结构...
  5. 贵州2021高考状元成绩查询,2021年贵州高考最高分多少分,历年贵州高考状元
  6. sis最新ip地址2020_2020年12月版 最新IP数据库 号段归属地 省市区镇村行政区划
  7. SAP License:什么是ERP供应链
  8. mount error 12 = Cannot allocate memory
  9. can硬件结构和工作原理_汽车CAN总线工作原理及测量方法详解
  10. tomcat测试程序的安装
  11. Python 脚本查询 ip纯真数据库
  12. 类Dota2服务器架构
  13. 【计算广告】浅谈广告归因
  14. (附源码)ssm小程序 实验室安全管理系统 毕业设计 031527
  15. 军用计算机ip等级是什么,加固计算机的IP防护等级是什么?
  16. ubuntu 下安装flash player
  17. GLES2.0中文API-glTexImage2D
  18. SDX62出现WARNING: CPU: 0 PID: 8743 at net/netfilter/nf_nat_core.c:614 nf_nat_setup_info+0x8e4/0x900
  19. 2021全国大学生数学建模竞赛A题思路
  20. java如何打印当前月份日历_打印当前月份日历

热门文章

  1. 国家两部委印发《智慧家庭综合标准化体系建设指南》
  2. 科研路上的拦路虎英文翻译
  3. Python-rot13-替换式密码
  4. 国内列为一级学报的期刊
  5. 揭秘世上唯一无癌国家吃什么?原来肿瘤也有克星
  6. Two Teams Composing
  7. python求绝对值得方法
  8. GoF设计模式(二)-行为型模式简介
  9. 单片机编程软件很简单(八),Keil单片机编程软件辅助功能讲解
  10. linux 下 .o 文件, .a文件,.so文件的区别