使用Java Debug Interface(JDI)调试多线程应用程序 - 编程入门网
中配置所需记录异常类型 。在 Demo 代码中配置了对于 NullPointerException 和 UserDefinedException 两种异常,分析工具将追踪这两种异常情况。
ExceptionName = exceptions.UserDefinedException;java.lang.NullPointerException 类过滤配置: 您可以在 ClassExcludeConfig.properties 属性文件中配置被过滤的类模式 ,分析工具将不会处理被过滤类的任何事件。 ExcludedClassPattern=java.*;javax.*;sun.*;com.sun.*;com.ibm.* 运行 在目标的主程序的生命周期中,分析器完成以下操作: 绑定,分析工具和目标调试程序的虚拟机实例绑定; 事件注册,分析工具向虚拟机实例注册相关事件请求,整个分析过程采取基 于事件驱动的模式。 线程运行时信息挖掘。 分类信息生成。 以上四点操作满足了需求:通过采用绑定机制实现调试程序和工具程序的独 立,分析工具和目标程序以监听端口、共享内存等方式进行通信,无须目标程序 进行任何代码修改即可实现调试。采用基于事件的机制可以帮助开发者依据实际 需要集中注册和处理事件。作为基础框架,分析工具注册了支持异常、执行流程 等事件,并提供了异常时运行栈快照,方法进出参数记录等功能实现信息抓取。 支持单线程为单位的 Log 记录,将开发者从无序不可预测的多线程执行中摆脱 出来,对调试程序提供帮助。 下面将详细阐述实现步骤: 绑定 JDI 支持四种对目标程序的绑定方式,分别为: 分析器启动目标程序虚拟机实例 分析器绑定到已运行的目标程序虚拟机实例 目标程序虚拟机实例绑定到已运行的分析器 目标程序虚拟机实例启动分析器 JDI 支持一个分析器绑定多个目标程序,但一个目标程序只能绑定一个分析 器。为支持以上绑定,JDI 对应有 LaunchingConnector,AttachingConnector 和 ListeningConnector,具体类介绍可以参照 文档。 本文采用第一种绑定方式阐述如何开发定制的多线程分析器,其它绑定方式 可以参照 文档。 绑定过程分为三个步骤: 获取连接实例 清单 1. 获取连接实例
Bootstrap.virtualMachineManager().allConnectors() 返回所有已知的 Connector 对象实例。选择返回 com.sun.jdi.CommandLineLaunch 连接实例, 表示使用第一种绑定方式。 使用Java Debug Interface(JDI)调试多线程应用程序(3)时间:2010-12-19 IBM 钱毅 蔡小川设置连接参数 清单 2. 设置连接参数
每个连接实例都有对应的默认参数,启动连接之前需要设置必须的参数,对 于 CommandLineLaunch 连接实例需要设置主程序启动目标程序虚拟机实例所需 的参数。 启动连接,获取目标程序虚拟机实例 清单 3. 启动 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |