背景介绍
随着java应用日益广泛,各种开源工具琳琅满目,在我们日常业务开发中许多工具框架信手拈来,大大增加了我们程序的开发效率。在这些开源工具或者框架给我们带来便利的时候,我们有的时候也想深入了解一下它们的原理,读读原码,debug调试调试,都是必经之路,java-tracer工具是一个在阅读原码过程中的一个辅助工具
工具效果
java-tracer主要提供[线程]方法调用栈时序图录制/展现功能,在程序运行的时候,录制调用栈,然后借助浏览器一层一层查看调用时序图,结合原i码,能更容易理解框架运行原理
DEMO预览
一个简单mybatis查询的时序图https://fengzhongke.github.io/pages/chart.html?page=mybatis
下载地址
https://raw.githubusercontent.com/fengzhongke/java-tracer/master/java-tracer.jar
使用方法
使用方法是以javaagent的方法带入程序中,
使用模式有两种,第1种是函数模式,即录制某个方法,第2种是线程模式,即录制所有线程
函数模式
启动的时候,增加agent参数,例如:java -javaagent:xxx/tracer-agent/target/java-tracer.jar xxxMainClass
启动的时候,console会输出: pages can be found in http://127.0.0.1:18902
打开链接,可以设置需要录制的方法的类名及方法名
函数模式下设置录制方法页面设置完之后,当方法被再次调用的时候,在主页面下面的result list模块就会有每次方法的录制记录,点击链接即可看到如上demo那样的时序图了
线程模式
线程模式跟函数模式一样,只是需要增加一个agent参数mode=1,例如:java -javaagent:xxx/tracer-agent/target/java-tracer.jar=mode=1 xxxMainClass
同样,程序启动之后,打开页面http://127.0.0.1:18902即可看到线程运行情况
线程模式下线程预览页面可以点击result list里面的service的链接,就可以查看到[线程]栈时序图
线程栈时序图在时序图中,可能通过调节显示栈深度,或者进入方法里面查看栈调用情况
网友评论