使用Java Debug Interface(JDI)调试多线程应用程序 - 编程入门网
ator();
while (it.hasNext()) {
handleEvent(it.nextEvent());
}
eventSet.resume();
} catch (InterruptedException exc) {// Ignore
} catch (VMDisconnectedException discExc) {
handleDisconnectedException();
break;
}
}
}
获取多线程执行信息 执行流程和变量信息是调试程序最重要的两方面。无论是通过 IDE 设置断点 的调试方式,还是通过在程序中记 Log 的调试方式,它们的主要目的是向开发 者提供以上两方面信息。本文分析器以单个线程为单位,来记录线程运行信息: 执行流程。分析器以方法作为最小颗粒度单位。分析器按照实际的线程执行 顺序记录方法进出。 变量值。对于单个方法而言,其程序逻辑固定,方法的输入值决定了方法内 部执行流程。分析器将在方法入口和出口分别记录该方法作用域内可见变量,便 于开发者调试。 执行栈信息记录。当异常发生时,执行栈中完好地保存了调用帧信息。分析 器获取线程栈中的所有帧,并记录每个帧记录的信息,其中包含可见变量值、帧 调用名称等信息。StackFrame 中变量信息的获取也是 JDI 所提供的特殊能力之 一。 与 IDE 设置断点的方法相比,提供的数据信息量相当,但分析器提供执行流 程信息更加的清晰;与在程序中记录 Log 的方式相比,分析器在执行流程和信 息量两方面都胜出。 使用Java Debug Interface(JDI)调试多线程应用程序(5)时间:2010-12-19 IBM 钱毅 蔡小川以下将详细介绍上面三方面信息抓取: 线程执行流程 线程执行流程可划分:线程启动→ run() →进入方法→ ... →退出方法→ 线程结束。通过向虚拟机实例注册 ThreadStartRequest,MethodEntryRequest ,MethodExitRequest 和 ThreadDeathRequest 事件的方式记录执行过程。事件 注册详细见清单 4,清单 6 列出分析器对于以上事件的处理方法。 清单 6. 获取执行流程
可见变量信息抓取 清单 7. 可见变量信息抓取
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |