快速业务通道

Java技术,IBM风格: 监视和判断问题 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
行。这不需要对 Java 代码进行任何手工处理,可以使用它跟踪 JCL、第三方包或应用程序代码。

方法跟踪功能尤其适合调试发生竞争状态和在方法之间传递了不合适的参数而导致异常的情况。由于跟踪时间戳具有毫秒级的精度,方法跟踪还可以用来调试性能问题。

在命令行上调用方法跟踪的办法是,添加 methods 关键字标志并将 mt 设置给目的地关键字之一(maximal、minimal、print)。methods 关键字允许按照类、方法名或这两者选择要跟踪的方法。可以使用通配符和取反操作符 ! 建立复杂的选择条件。例如:

-Xtrace:print=mt,methods={*.*,!java/lang/*.*}:对于除了 java.lang 包中的方法和类之外的所有方法和类,将方法跟踪写到 stderr 中。

-Xtrace:maximal=mt,output=trace.out,methods={tests/mytest/*.*}:对于 tests.mytest 包中的所有方法,将方法跟踪写到文件中。(注意,这个选项只选择要跟踪的方法。)

在发生跟踪事件时触发

IBM 跟踪引擎最强大的特性之一是它能够在发生跟踪事件时触发,这有助于创建目的明确的跟踪输出并减少产生的跟踪数据量。这会提高被调试的应用程序的性能(由于开销大大降低了)和解释数据的速度(由于多余的数据减少了)。

跟踪引擎能够在任何给定的跟踪点上触发,包括 VM 内部的跟踪点或 Java 方法,而且在发生事件时可以执行许多操作,见表 2:

表 2. 跟踪引擎操作

关键字 功能
suspend 暂停所有 跟踪(特殊跟踪点除外)。
resume 恢复所有 跟踪(由 resumecount 属性和 Trace.suspendThis() 调用暂停的线程除外)。
suspendthis 增加这个线程的暂停计数。非零的暂停计数会停止这个线程的所有跟踪。
resumethis 减少这个线程的暂停计数(如果这个值大于零的话)。如果暂停计数到达零,那么这个线程的跟踪就会恢复。
sysdump 生成非破坏性的系统转储。
javadump 生成 Java 转储。
heapdump 生成堆转储。
snap 将所有激活的跟踪缓冲区写到当前工作目录中的一个文件中。

Java技术,IBM风格: 监视和判断问题(4)

时间:2011-01-30 IBM Chris Bailey

可以使用 trigger 命令行关键字激活触发跟踪,这个关键字决定在发生事件时执行表 2 中的哪些操作。注意,触发选项控制其他跟踪属性已经选择的跟踪数据是正常生成,还是被阻塞。

使用以下格式指定方法事件上的触发:

-Xtrace:trigger=method{method spec, entry action, exit action, delay count, match count}

当进入与 method spec 匹配的任何方法时,执行 entry action。当退出方法时,执行 exit action。如果指定了 delay count,那么只有当进入和退出的次数大于 delay count 时才执行 entry action 和 exit action。如果指定了 match count,那么操作的执行次数不超过这个值。请考虑以下示例:

-Xtrace:trigger=method{java/lang/StackOverflowError*, sysdump}

这在第一次(而且只在第一次)调用 StackOverflowError 方法时(进行调用的是 <clinit> 方法),创建一个非破坏性的系统转储。

可以使用 suspend 和 resume 选项并结合 resumecount 或 suspendcount 关键字来暂停和恢复单独的线程或所有线程:

-Xtrace:resumecount=1  -Xtrace:trigger=method{HelloWorld.main,resume,suspend}

这些

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号