使用 Java Debug Interface(JDI)调试多线程应用程序
2009-10-10 00:00:00 来源:WEB开发网ExceptionName = exceptions.UserDefinedException;java.lang.NullPointerException
类过滤配置:
您可以在 ClassExcludeConfig.properties 属性文件中配置被过滤的类模式,分析工具将不会处理被过滤类的任何事件。
ExcludedClassPattern=java.*;javax.*;sun.*;com.sun.*;com.ibm.*
运行
在目标的主程序的生命周期中,分析器完成以下操作:
绑定,分析工具和目标调试程序的虚拟机实例绑定;
事件注册,分析工具向虚拟机实例注册相关事件请求,整个分析过程采取基于事件驱动的模式。
线程运行时信息挖掘。
分类信息生成。
以上四点操作满足了需求:通过采用绑定机制实现调试程序和工具程序的独立,分析工具和目标程序以监听端口、共享内存等方式进行通信,无须目标程序进行任何代码修改即可实现调试。采用基于事件的机制可以帮助开发者依据实际需要集中注册和处理事件。作为基础框架,分析工具注册了支持异常、执行流程等事件,并提供了异常时运行栈快照,方法进出参数记录等功能实现信息抓取。支持单线程为单位的 Log 记录,将开发者从无序不可预测的多线程执行中摆脱出来,对调试程序提供帮助。
下面将详细阐述实现步骤:
绑定
JDI 支持四种对目标程序的绑定方式,分别为:
分析器启动目标程序虚拟机实例
分析器绑定到已运行的目标程序虚拟机实例
目标程序虚拟机实例绑定到已运行的分析器
目标程序虚拟机实例启动分析器
JDI 支持一个分析器绑定多个目标程序,但一个目标程序只能绑定一个分析器。为支持以上绑定,JDI 对应有 LaunchingConnector,AttachingConnector 和 ListeningConnector,具体类介绍可以参照 文档。
更多精彩
赞助商链接