阿尔萨斯原理解析

编程入门 行业动态 更新时间:2024-10-08 23:00:08

<a href=https://www.elefans.com/category/jswz/34/1755944.html style=阿尔萨斯原理解析"/>

阿尔萨斯原理解析

iarthas

前阵子对阿尔萨斯的原理进行一点探究,对它的原理总结整理如下:通过仿写一个简易版的阿尔萨斯,来加深对它的认识。

i_arthas 是模仿阿里开源的阿尔萨斯写的小工具。整体技术上采用 Java agent 对字节码的加载进 行拦截干涉,利用 ASM/ASM Byte Viewer 实现目标类字节码的加强,通过 Java attach 实现不同 虚拟机进程间的通信,做到了虚拟机层面上的 AOP。

整体实现了简易版的 redefine(热替换)、 watch(方法监控)、trace(方法链路追踪)、timeTunnel(流量采集与回放)等功能。

代码上传至github :

实现思路

阿尔萨斯 原理探究 仿写arthas-TimeTunnel 流量采集

阿尔萨斯 原理探究 仿写arthas-watch

阿尔萨斯 原理探究 仿写arthas-trace

阿尔萨斯 原理探究 仿写arthas-redefine

阿尔萨斯 原理探究 asm再认识(转载)

阿尔萨斯 原理探究 agentmain实践

阿尔萨斯 原理探究 premain实践

阿尔萨斯 原理探究 预备知识

阿尔萨斯 原理探究 初体验(转载)

大体效果

timetunnel 流量采集:
2
1
-------------------
开始采集方法:doAdd2
开始采集方法:doDelet1
-------------------

watch 方法监控
4
1
-------------------
监控当前方法:doAdd入参:参数类型-- int@1参数类型-- String@abc参数类型-- long@11参数类型-- Lagent/Job;@agent.Job@7adf9f5f参数类型-- Lagent/Main;@agent.Main@85ede7b参数类型-- double@0.11出参:参数类型-- int@4
4
1
-------------------
trace 方法子调用链路追踪
3
1
-------------------
doAdd
-|javalangThread@sleep
--|method  Cost: 1000.0282599999999 ms
-|agentJob@test
--|method  Cost: 1000.0648309999999 ms
almost time cost:
--|method  Cost: 2005.3643539999998 ms
3
1
-------------------
redefine 热加载
Hello World!
Bye Bye
-------------------
Hello World!
Bye Bye
-------------------
Hello World!
Bye Bye
fix good Bye!!

更多推荐

阿尔萨斯原理解析

本文发布于:2024-02-07 09:50:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755249.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:阿尔萨斯   原理

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!