我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解JAVA远程debug

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解JAVA远程debug

目录

1.什么是远程debug?

2.远程debug普通JAVA程序

环境

测试程序

程序启动指令

编译器配置

3.远程debug JAVA Web程序

4.远程debug spring boot程序


1.什么是远程debug?

远程debug,也就是可以在本地debug远端部署的程序,这对于定位远端环境中的问题非常有用,之所以我们说是远端环境,而不说是对定位生产环境中的bug很有用,是因为远程调试通常在开发和测试阶段使用,而不建议在生产环境中使用,因为可能会对性能产生影响。当然,在没有办法的时候使用远程debug,是最高效的定位生产问题的手段之一。

远程debug可以理解为一种JVM规范,当然其不是单独的一个规范,它是属于JDWP(Java Debug Wire Protocol)协议中的一部分,该协议定义了 Java 虚拟机(JVM)与调试器之间的交互方式。通过 JDWP,开发者可以在开发工具中设置断点、查看变量、执行代码等操作,以便对运行中的 Java 程序进行调试。说直白点就是遵循了该协议的JVM,就支持debug,也支持远程debug。

2.远程debug普通JAVA程序

2.1.环境

JDK:1.8

编译器:IDEA

2.2.测试程序

这里我们写了很简单一个测试程序,每1秒,i自加1,然后将其打包成jar包

public static void main(String[] args) throws InterruptedException {        int i=0;        while (true){            Thread.sleep(1000);            i++;        }    }

我估计很多同学一下会忘了这么在IDEA中将普通java se程序如何打包成jar了,这里贴心一点,给出打包方法,用打包jar包的maven插件,指定好main入口,然后install即可:

                                    org.apache.maven.plugins                maven-jar-plugin                3.2.0                                                            com.eryi.Test                                                                                    

2.3.程序启动指令

要远程debug,首先在程序启动时就要用参数开启远程debug,完成参数指令如下:

 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=:

  • transport:指定调试信息传输的方式,一般使用 dt_socket
  • server:指定是否为调试服务端,使用 y 表示是。
  • suspend:指定是否在启动时暂停,使用 n 表示不暂停。
  • address:指定调试监听的主机和端口,也就是通过该端口来进行远程debug的。

以我们上面的程序为例,完成的启动命令为:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005 -jar test-1.0-SNAPSHOT.jar

启动成功会显示正在监听debug的端口:

2.4.编译器配置

我们想要在IDEA中远程debug,需要进行配置:

add configurations

 add new configuration—>remote

配置:

开始debug:

可以看到程序进入了断点。

3.远程debug JAVA Web程序

tomcat作为常用的web server为了方便使用,自然也支持了远程debug的功能。普通java程序是用java -jar启动,tomcat是用启动脚本启动,启动脚本里记录的就是tomcat启动要执行的所有命令,远程debug也写在里面。

Windows环境下修改start.sh,在第一行加上以下命令:

export CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=:,server=y,suspend=n"

Linux环境下修改start.bat,在第一行加上以下命令:

set "CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=:,server=y,suspend=n"

4.远程debug spring boot程序

spring boot项目作为一个jar,是可以用java -jar然后跟参数这种启动普通Java程序debug的方式来进行debug的,除此之外,spring boot还提供了一个更方便的远程debug的方式,就是将参数配置在spring boot的打包插件中。

                        org.springframework.boot            spring-boot-maven-plugin                            -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=:                        

来源地址:https://blog.csdn.net/Joker_ZJN/article/details/132252506

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解JAVA远程debug

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java程序员必会的远程debug教程

这篇文章主要为大家介绍了java程序员必会的远程debug教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

jvm开启远程调试功能;idea远程debug

概述 有时候一些问题本地调试无法复现,这个时候可以开启jvm的远程调试功能 jar包启动 jdk8 java -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=
2023-08-30

Java VisualVM监控远程JVM(详解)

我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.这个工具就在JAV
2023-05-30

Eclipse中怎么设置远程Debug

Eclipse中怎么设置远程Debug,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Eclipse远程Debug功能是应对以下的需求而诞生的:Eclipse 是一个集成开发环境
2023-06-17

Python必备技能之debug调试教程详解

这篇文章主要为大家详细介绍了Python初学者必须要学会的技能——在Python中进行debug操作,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2023-03-19

PhpStorm配置debug环境的详细过程

在开发php项目的时候,有时候不知道明确的错误在哪里,想要用java或者c#那样能够开启debug断点分步调试,下面这篇文章主要给大家介绍了关于PhpStorm配置debug环境的详细过程,需要的朋友可以参考下
2023-01-15

详解如何查看Elasticsearch的Debug日志

这篇文章主要为大家介绍了详解如何查看Elasticsearch的Debug日志,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-16

Java平台调试体系原理分析和实践整理远程Debug

这篇文章主要介绍了Java平台调试体系原理分析和实践整理远程Debug,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-09

怎么在springboot中使用IDEA远程连接Debug

本篇文章为大家展示了怎么在springboot中使用IDEA远程连接Debug,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 1、先创建一个准备远程调试的Demo,注意构建项目的配置
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录