动态跟踪Java代码的执行状况工具

Posted on

动态跟踪Java代码的执行状况工具--BTrace

BlueDavy之技术Blog

理论不懂就实践,实践不会就学理论!

动态跟踪Java代码的执行状况工具--BTrace

非常强烈的推荐下BTrace这个工具,用了后不得不说太强大了,BTrace简单来说,就是能在不改动当前程序的情况下,运行时的去监控Java程序的执行状况,例如可以做到内存状况的监控、方法调用的监控等等,官方网站上有非常多详细的例子,我不说太多,只在下面举一个简单的例子来说明它的作用,BTrace的User Guide请见:http://kenai.com/projects/btrace/pages/UserGuide。 对于运行中的Java程序,尤其是出了问题的程序,会需要跟踪其执行状况,例如传入的参数是什么、执行了多少时间,返回的对象是什么,抛出了什么异常,传统的做法只能是把程序改一遍,加上一堆log,一个例子来展示下用BTrace的情况下,怎么来跟踪一个方法的执行时间: @BTrace public class MethodResponseTime {

@TLS private static long startTime;

@OnMethod(clazz="类名",method="方法名")
public static void onCall(){
    println("enter this method");
    startTime=timeMillis();
}

@OnMethod(clazz="类名",method="方法名",location=@Location(Kind.RETURN))
public static void onReturn(){
    println("method end!");
    println(strcat("Time taken ms",str(timeMillis()-startTime)));
}

} 用btrace执行上面的代码,就可以动态的监控任意的目前运行的Java程序中某类的某方法的执行时间,执行上面代码的方式如下(jdk 6+): btrace [pid] MethodResponseTime.class 还有例如获取调用参数、调用者的对象实例以及返回值等请参看User Guide。 btrace为了保持JVM运行的安全性,因此做了很多的限制,例如不能抛出异常、修改传入的参数的值、修改返回值等,基本是一个只读的动态分析代码运行状况的工具,但仍然是非常的有用,其实现机制是attach api + asm + instrumentation。

posted on 2009-10-10 12:41 BlueDavy 阅读(11121) 评论(8) 编辑 收藏 所属分类: Java

[

评论

]()

不错,这个有点强悍的,使用一下先 回复 更多评论

收藏了,以后可能用得着。 回复 更多评论

要钱吗? 回复 更多评论

试了一下trace Apache Felix 2.0.0, 已加载了的类不好使,抛出NullPointerException。 回复 更多评论

貌似没有什么界面,还得用命令行啊~~~ 回复 更多评论

visualvm有btrace的插件 回复 更多评论

林昊朋友,你好, 首先祝贺你的blog被ZDNet评为了“最受欢迎中国技术博客”之一。 不过你的照片……不知你弄错了还是ZDNet弄错了,是我的头像呵。 详情参考: http://blog.linjian.org/articles/my-photo-misused-again/ 有机会看看你写的书。我前不久也与博文视点合作过,是《我是一只IT小小鸟》的合作者之一。 回复 更多评论

@sswv ...我并不知道ZDNET评选这件事情,我联系下他们吧,不好意思了,可是现在相当火的书,非常恭喜。 回复 更多评论 新用户注册 刷新评论列表

推荐购买云服务器(15%返利+最高千元奖金) 博客园 博问 IT新闻 Java程序员招聘 标题 请输入标题 姓名 请输入你的姓名 主页 请输入验证码 验证码 /* 内容(请不要发表任何与政治相关的内容) 请输入评论内容 Remember Me? 登录 [使用Ctrl+Enter键可以直接提交] 网站导航:

博客园 IT新闻 知识库 C++博客 程序员招聘 管理 相关文章:

feedsky 抓虾 google reader 鲜果

导航

统计

  • 随笔 - 294
  • 文章 - 2
  • 评论 - 2068
  • 引用 - 1

随笔分类

随笔档案

文章档案

Blogger's

搜索

*

最新评论

阅读排行榜

评论排行榜

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途