首页 > 编程语言 >java故障处理(三)远程debug

java故障处理(三)远程debug

时间:2023-04-13 15:56:51浏览次数:55  
标签:Java 故障 debug java com 远程 调试

转载:https://blog.51cto.com/u_11554106/4930697

一、remote debug

何为远程debug呢?通常我们在开发过程中,都会将代码部署到服务中,这个时候QA 提出了一个bug,通过查看代码的逻辑发现问题十分的困难?

一般情况下都是想着本地能不能复现一下,本地debug 调试一下;或者通过arthas 进行相关逻辑的诊断也是可以的。

但是今天我们讲的是远程debug,意思就是直接调试linux 服务器上面的代码,在IDEA中添加一个remote 然后填写远程服务器的开启JPDA(Java Platform Debugger Architecture)的端口号,只需要本地存在相同的代码即可。

这样的使用场景非常多,比如本地启动代码真的特别的麻烦,有时候开发代码都是直接使用远程debug。

二、实践

2.1 远程服务器java程序开启JPDA

java -agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n  -jar xxx.jar

就是开启了远程debug

2.2 本地启动remote-debug

客户端在IDEA中选择remote的这种方式,然后填写服务器端开启的ip 和JPDA的端口即可,,然后启动即可调试

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

然后就可以像调试本地一样的进行调试了,非常的方便

三、理论

JPDA(Java Platform Debugger Architecture)是Java平台调试体系结构的缩写。由3个规范组成,分别是JVMTI(JVM Tool Interface),JDWP(Java Debug Wire Protocol),JDI(Java Debug Interface) 。

1.JVMTI定义了虚拟机应该提供的调试服务,包括调试信息(Information譬如栈信息)、调试行为(Action譬如客户端设置一个断点)和通知(Notification譬如到达某个断点时通知客户端),该接口由虚拟机实现者提供实现,并结合在虚拟机中。本质上JVMTI是一个programming interface,主要用在开发和监控上。而且它提供了接口去观察(inspect) 应用状态和控制应用的执行。提供了profiling、debuging、monitoring、thread analysis、coverage analysis等等,我们使用到的debug,只是JVMTI提供的众从能力中的一种。Class的hotSwap,就是通过Instrument实现class的redefine和retransform实现。可以参考arthas实现、或者这篇文章。

2.JDWP定义调试服务和调试器之间的通信,包括定义调试信息格式和调试请求机制

3.JDI在语言的高层次上定义了调试者可以使用的调试接口以能方便地与远程的调试服务进行交互,Java语言实现,调试器实现者可直接使用该接口访问虚拟机调试服务。 java调试工具jdb,就是sun公司提供的JDI实现。

更多JPDA 可以参考


第 1 部分,JPDA 体系概览  ​ ​https://www.ibm.com/developerworks/cn/java/j-lo-jpda1/​​
第 2 部分  JVMTI 和 Agent 实现 ​ ​https://www.ibm.com/developerworks/cn/java/j-lo-jpda2/​​
第 3 部分: JDWP 协议及实现   ​ ​https://www.ibm.com/developerworks/cn/java/j-lo-jpda3/​​
第 4 部分: Java 调试接口(JDI)  ​ ​https://www.ibm.com/developerworks/cn/java/j-lo-jpda4/​​

四、参考文档

JAVA远程debug   
Tomcat Remote Debug操作和原理
当我们谈Debug时,我们在谈什么(Debug实现原理) ​ ​https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650859362&idx=1&sn=6d0a588da10ebf38e9d83cfa4e7e16fa&chksm=f13298b1c64511a78e3a87df0f1ddebd87719a36a9335edd759c404cd5c53d65e9383da613f1&scene=21#wechat_redirect​​
手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理 
javaagent使用指南  

 

标签:Java,故障,debug,java,com,远程,调试
From: https://www.cnblogs.com/wangbin2188/p/17315087.html

相关文章

  • 配电网故障重构程序matlab 采用yalmip+cplex方法,通过matlab编程,配电网二阶锥模型
    配电网故障重构程序matlab采用yalmip+cplex方法,通过matlab编程,配电网二阶锥模型,得到任意支路故障的配电网重构模型,程序通用性好,运行可靠。ID:5660642492687429......
  • Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not fi
    用idea使用mybatis时<mappers><mapperresource="com/mybatis/mapper/UserMapper.xml"></mapper></mappers>遇到吐下错误时ErrorparsingSQLMapperConfiguration.Cause:java.io.IOException:Couldnotfindresourcecom/my......
  • java故障处理(二)可视化工具
    一、JConsole:Java监视与管理控制台命令行:jconsoleJConsole是一款基于JMX的可视化监视、管理工具。它的主要功能是通过JMX的MBean(ManagedBean)对系统进行信息收集和参数动态调整。JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机之上的软件中,......
  • Java里的数据类型都有哪些
    相关面试题我们从学习Java开始,很快就会遇到Java中的数据类型这个问题。关于数据类型,对于初学者来说,很容易记混,因为Java中的数据类型划分的有点多。所以在招聘初级程序员时,面试官就会经常在这一块出一些题目,对求职者进行基础语法方面的考核。常见的数据类型相关的面试题如下:请说一......
  • java故障处理(一)基础命令行工具
     一、基础命令行工具1.jps:虚拟机进程状况工具可以列出本机正在运行的虚拟机进程,并显示主类1.1.选项:选项作用-q省略主类,只显示id-l显示主类全名,或jar包路径-m显示传递给主类main方法的参数-v输出jvm启动时所有参数2.jstat:虚拟机统计信息监控用于监......
  • JAVA返回前端时候bean转json时首字母、第二个字母大写会自动变成小写的问题
      后台bean是privateStringuName;但是前端生成的json是uname会自动变成小写 如果我们只是个别的几个的话,只需要加个注解@JsonProperty("uName")privateStringuName; 这样就可以了......
  • 如何实现 Java SpringBoot 自动验证入参数据的有效性
    JavaSpringBoot通过javax.validation.constraints下的注解,实现入参数据自动验证如果碰到@NotEmpty否则不生效,注意看下@RequestBody前面是否加上了@ValidValidation常用注解汇总Constraint详细信息@Null被注释的元素必须为null@NotNull被注释的元素必须不......
  • mysql主从故障恢复
    之前遇到过一次Slave_SQL_Running:no的情况,解决方法请参考:https://www.cnblogs.com/sxFu/p/16022876.html而这次遇到的故障为:Slave_IO_Running:no一方面原因是因为网络通信的问题也有可能是日志读取错误的问题 再看错误信息可以判断为日志读取错误的问题 解决办法1、......
  • 百度编辑器粘贴图片自动上传到服务器(Java版)
    ​ 如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>......
  • JAVA使用OpenOffice文件转换
    下载jar包maven中央仓库包不支持docx文件所以不建议使用。jar包是为了方便链接下载链接:https://nchc.dl.sourceforge.net/project/jodconverter/JODConverter/2.2.2/jodconverter-2.2.2.zip 解压后找到:jodconverter-2.2.2\jodconverter-2.2.2\lib\jodconverter-2.2.2.jar放......