当前位置:首页 > 科技  > 软件

手把手教你IDEA进行远程Debug调试的来龙去脉

来源: 责编: 时间:2023-12-13 17:02:55 375观看
导读一、前言我们在测试环境时,遇到一些bug,看上下文的日志,还是无法判断出问题所在时,此时需要Debug来解决。为了更方便、更高效地定位和解决问题,远程调试成为一种常见的实践方式。这个还是不建议在生产中使用,可以在测试环境

2bm28资讯网——每日最新资讯28at.com

一、前言

我们在测试环境时,遇到一些bug,看上下文的日志,还是无法判断出问题所在时,此时需要Debug来解决。2bm28资讯网——每日最新资讯28at.com

为了更方便、更高效地定位和解决问题,远程调试成为一种常见的实践方式。2bm28资讯网——每日最新资讯28at.com

这个还是不建议在生产中使用,可以在测试环境走和生产一样的单据来Debug。要是生产环境忘记去掉断点,直接炸了!2bm28资讯网——每日最新资讯28at.com

「还是不到万不得已不要在生产使用,使用完也要把本地的断点全部取消掉!」2bm28资讯网——每日最新资讯28at.com

二、JPDA

在实战之前,我们可以了解一下JPDA!能够远程Debug就是使用这个技术实现的!2bm28资讯网——每日最新资讯28at.com

1、概念

JPDA(Java Platform Debugger Architecture)是 Java 平台调试体系结构的缩写,它是 Java 开发工具包(JDK)中提供的一组 API 和协议,用于支持 Java 程序的调试。2bm28资讯网——每日最新资讯28at.com

2、核心组件

Java 虚拟机工具接口(JVMTI): JVMTI 提供了在 Java 虚拟机 (JVM) 中运行时监视和检测的一组 API。它允许调试器在运行时获取有关类、对象、线程等信息,并在程序执行时进行干预。2bm28资讯网——每日最新资讯28at.com

Java 调试器接口(JDI): JDI 是在 JPDA 中用于编写调试器的 Java API。它允许开发者通过 Java 语言编写调试器,实现与 JVM 的通信和控制。2bm28资讯网——每日最新资讯28at.com

Java 虚拟机调试协议(JDWP): JDWP 是 JVM 与调试器之间通信的协议。它定义了调试器如何与 JVM 进行通信,包括断点设置、变量检查、执行控制等。2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

3、调试功能

断点设置: 在代码中设置断点,以便在执行到特定代码行时暂停程序的执行。2bm28资讯网——每日最新资讯28at.com

变量检查: 查看和修改程序中的变量值。 2bm28资讯网——每日最新资讯28at.com

单步执行: 逐步执行程序,以便更详细地检查代码的执行过程。 2bm28资讯网——每日最新资讯28at.com

异常处理: 在程序抛出异常时停止执行,以进行异常处理。2bm28资讯网——每日最新资讯28at.com

三、Idea实战

非常的简单就是运行Jar包的时候加上命令,在Idea配置上远程调试就行了!2bm28资讯网——每日最新资讯28at.com

1、Jar包准备

新建一个项目或者使用公司的项目,打成Jar包。为了模拟真实性,我们在windows里运行Jar包一次,然后上传到虚拟机里运行一次!2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

自己写一个Controller,接收请求,多写几行方便打断点:2bm28资讯网——每日最新资讯28at.com

/** * @author wangzhenjun * @date 2023/11/28 15:54 */@RequestMapping("/test")@RestControllerpublic class TestController {    @GetMapping("/list")    public String list (){        System.out.println("======1======");        System.out.println("======2======");        System.out.println("======3======");        System.out.println("======4======");        return "成功";    }}

2、Idea配置远程监听

此时Idea已经把运行Jar包的命令给我们了!2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

3、运行Jar包

找到jar所在位置,执行命令:2bm28资讯网——每日最新资讯28at.com

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8088 -jar demo-0.0.1-SNAPSHOT.jar

我们来解释一下命令的意义:2bm28资讯网——每日最新资讯28at.com

-agentlib:jdwp:启用 JDWP 调试支持。2bm28资讯网——每日最新资讯28at.com

transport=dt_socket:指定 JDWP 调试器和 JVM 之间的通信方式为 socket 传输。2bm28资讯网——每日最新资讯28at.com

transport 参数有两种常见的模式,分别是 dt_socket 和 dt_shmem。2bm28资讯网——每日最新资讯28at.com

「dt_socket:使用 socket 传输模式,一般用于调试服务器运行 dt_shmem:使用共享内存传输模式,一般用于本地调试,因为共享内存需要在同一台物理机器上才能正常工作。」2bm28资讯网——每日最新资讯28at.com

server=y:表示 JVM 将作为调试服务器运行,等待调试器连接。2bm28资讯网——每日最新资讯28at.com

suspend=n:指定 JVM 在启动后是否暂停等待调试器连接。n 表示不暂停,即 JVM 在启动后立即执行应用程序。如果设置为 y,则 JVM 启动后会等待调试器连接,直到调试器连接上为止。2bm28资讯网——每日最新资讯28at.com

address=8088: 指定调试器连接的端口号,和Idea监听的端口一致。2bm28资讯网——每日最新资讯28at.com

我们先访问一下,控制台是可以打印我们的日志!2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

4、测试

我们启动Idea配置好的监听,然后再打上断点!2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

访问接口,成功拦截到请求!2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

放行后,查看控制台正常输出:2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

此时我们使用虚拟机里的Jar包启动!2bm28资讯网——每日最新资讯28at.com

「需要我们把Idea中的本地IP换成虚拟机的IP」2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

重新访问,没有问题,我们放行后正常打印!2bm28资讯网——每日最新资讯28at.com

2bm28资讯网——每日最新资讯28at.com

四、总结

是不是非常的简单,大家可以自己试一下,这里还是在测试环境玩玩就行。2bm28资讯网——每日最新资讯28at.com

这种方式还有弊端,现在一般都是容器化部署,这种命令就不太好使了,感兴趣的可以试试使用docker容器来发布!2bm28资讯网——每日最新资讯28at.com

是不是发布完之后,把Jar包挂载出来,然后再运行一遍专门来Debug的!2bm28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-44414-0.html手把手教你IDEA进行远程Debug调试的来龙去脉

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 怎么写一个Maven插件来提升生产效率?

下一篇: 效率工具:Hutool 嘎嘎香,开炫了!

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 7月4日见!iQOO 11S官宣:“鸡血版”骁龙8 Gen2+200W快充加持

    上半年已接近尾声,截至目前各大品牌旗下的顶级旗舰都已悉数亮相,而下半年即将推出的顶级旗舰已经成为了数码圈爆料的主流,其中就包括全新的iQOO 11S系
  • 朋友圈可以修改可见范围了 苹果用户可率先体验

    近日,iOS用户迎来微信8.0.27正式版更新,除了可更换二维码背景外,还新增了多项实用功能。在新版微信中,朋友圈终于可以修改可见范围,简单来说就是已发布的朋友圈
  • onebot M24巧系列一体机采用轻薄机身设计,现已在各平台开售

    onebot M24 巧系列一体机目前已在线上线下各平台同步开售。onebot M24 巧系列采用一体化轻薄机身设计,最薄处为 10.15mm,拥有宝石红、午夜蓝、石墨绿、雅致
Top