java-tracer

Java 源码阅读工具
授权协议 GPL
开发语言 Java JavaScript HTML/CSS
所属分类 开发工具、 代码管理分析/审查/优化
软件类型 开源软件
地区 国产
投 递 者 陈志
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

java-tracer 是一个 Java 源码阅读工具,利用它可以把我们程序运行过程栈录制下来,并实时绘制成时序图,使用简单方便。

工具效果

java-tracer 主要提供[线程]方法调用栈时序图录制/展现功能,在程序运行的时候,录制调用栈,然后借助浏览器一层一层查看调用时序图,结合原i码,能更容易理解框架运行原理。

使用方法

使用方法是以 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 的链接,就可以查看到[线程]栈时序图。

在时序图中,可能通过调节显示栈深度,或者进入方法里面查看栈调用情况。

 相关资料
  • 本实验会带着大家阅读 express 源码。为什么有那么多的 Express 用法?而没有人去看一看它的实现呢?

  • JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的 java 应用程序。JDK 是整个 java 开发的核心,它包含了 JAVA 的运行环境(JVM+Java 系统类库)和JAVA工具。

  • 学习5阶段 getting start 入门 guide 指南 doc 查api 阅读源码 向开源贡献代码 你该阅读源码? 上面已经说了,第四个阶段才是读源码 原因是,必须熟练才有用,不然读了也白扯 熟练使用该模块 熟练掌握npm 熟练掌握nodejs语法 有了这个前提你就可以阅读了。 当然事情也不能绝对,没这些,你也可以看,从中找出有用的写法或者学习代码规范也是好的。 看目录结构(express

  • Sanic源码阅读:基于0.1.2 Sanic是一个可以使用async/await语法编写项目的异步非阻塞框架,它写法类似于Flask,但使用了异步特性,而且还使用uvloop作为事件循环,其底层使用的是libuv,从而使 Sanic的速度优势更加明显。 本章,我将和大家一起看看Sanic里面的运行机制是怎样的,它的Router Blueprint等是如何实现的。 如果你有以下的需求: 想深入了解

  • 本文向大家介绍有阅读过ElementUI的源码吗?相关面试题,主要包含被问及有阅读过ElementUI的源码吗?时的应答技巧和注意事项,需要的朋友参考一下 读过, 公司封装自己的UI库的时候, 我都过很多UI库的源码, 比如element, iview, vuetifyjs, 等

  • 问题内容: Java的默认编码为。是?(请参见下面的编辑) 当文本文件被编码为?读者如何知道自己必须使用? 我谈论的读者是: s 来自的s 一个从 … 轮到我们,编码取决于操作系统,这意味着以下内容并非在每个操作系统上都适用: 问题答案: 读者如何知道他必须使用UTF-8? 通常你指定 你自己 的一个。它有一个采用字符编码的构造函数。例如 所有其他读者(据我所知)都使用平台默认字符编码,这实际上可

  • 为什么要阅读Tornado的源码? Tornado 由前 google 员工开发,代码非常精练,实现也很轻巧,加上清晰的注释和丰富的 demo,我们可以很容易的阅读分析 tornado. 通过阅读 Tornado 的源码,你将学到: 理解 Tornado 的内部实现,使用 tornado 进行 web 开发将更加得心应手。 如何实现一个高性能,非阻塞的 http 服务器。 如何实现一个 web 框

  • 问题内容: 我想阅读使用linux命令编写的实际源代码。我已经获得了使用它们的一些经验,现在我认为是时候与我的机器进行更深层次的互动了。 我在http://directory.fsf.org/wiki/GNU中找到了一些命令。不幸的是,我找不到基本的命令,例如“ ls”,在我看来这很容易上手。 我如何准确地读取像’ls’这样的简单shell命令的源代码?我在Ubuntu 12.04上运行 问题答案