文档章节

也谈java的在线调试工具

_hadooper
 _hadooper
发布于 2015/05/23 22:49
字数 470
阅读 456
收藏 0

为什么需要在线调试工具

     作为标准的程序员,不可以写的代码一劳永逸。万一遇到线上的问题怎么处理,打的系统LOG无法排查出问题怎么办?加日志吧?需要停止目前的服务,风险还是很大的。那么就需要能够动态的注入到目前的代码中的程序,来实现对系统的动态监控。这样可以及时定位问题,定位后修改代码,可以直接分批发布出去。这样不影响线上服务,还能同时修改BUG,不得不赞。

为什么可以在线调试

    对于java程序,这还要感谢给我们提供了这样的功能,java的动态注入代码功能,这样我们可以动态的去修改已经加载的class,动态的在方法中去注入自己的监控代码。详细原理最后介绍。

在线调试工具有哪些

可视化的工具有:jvisualvm,jconsole(这些jvm自带的)

控制台的工具:BTrace,greys-anatomy(第三方的,服务器调试必备)

他们的原理是如何的

关键的一节来了,他们究竟怎么实现的,是不是也想自己实现一个。

首先要感谢java支持agent以及Instrumentation。具体内容自己脑补。

有了这些之后我们就可以注入代码了,那么问题来了,怎么修改代码。

字节码修改工具其实很多,有cglib,asm,有了这些第三方的jar,你就可以动态的修改已经加载的class,没错,你成了一个geek。差不多就这些知识,你就可以完成一个在线调试工具。


© 著作权归作者所有

_hadooper
粉丝 11
博文 14
码字总数 10349
作品 0
南京
技术主管
私信 提问
eclipse常用Eclipse插件介绍

以下是我整理的自己开发过程中的常用Eclipse插件: (1) AmaterasUML 介绍:Eclipse的UML插件,支持UML活动图,class图,sequence图,usecase图等;支持与Java class/interface之间的相互导入...

刘卫东
2014/09/17
143
0
10个最好用的在线编译/调试工具

本文要推荐10个最好用的在线编译器,以下顺序不按排名先后: 1、ideone 可以在线编译盒调试C/C++,JAVA,PHP,Python,Perl,以及其他40多种编程语言。 官方网站:www.ideone.com 2、codepad...

wewelove
2014/08/08
326
0
Eclipse 远程调试 Java 程序

今天同事问我怎么远程调试 java 程序。我不会,那马上搜索看看。在被高度的程序中加个数据就行。然后 eclipse 调试时指定端口就行,太方便了。 比如,现在有一个代码: 把这个java 导出为 re...

鉴客
2010/08/05
1K
1
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载

JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载 JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层...

刘邵博
2012/10/29
552
1
Java常识:IDE、JRE、JDK等字段的阐述

目前对这些最基本的常识都难以阐述,颇觉羞愧,果断整理出来。 IDE(Integrated Development 集成开发环境),集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、...

MiniBu
2014/05/06
878
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
144
8
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部