使用 Java Debug Interface(JDI)调试多线程应用程序
2009-10-10 00:00:00 来源:WEB开发网注册事件
EventRequestManager 管理事件请求,它支持创建、删除和查询事件请求。EventRequest 支持三种挂起策略:
EventRequest.SUSPEND_ALL : 事件发生时,挂起所有线程
EventRequest.SUSPEND_EVENT_THREAD : 事件发生时,挂起事件源线程
EventRequest.SUSPEND_NONE : 事件发生时,不挂起任何线程
JDI 支持多种类型的 EventRequest,如 ExceptionRequest,MethodEntryRequest,MethodExitRequest,ThreadStartRequest 等,可以参考 文档。
清单 4. 注册事件
EventRequestManager mgr = vm.eventRequestManager();
// 注册异常事件
ExceptionRequest excReq = mgr.createExceptionRequest(null, true, true);
excReq.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
excReq.enable();
// 注册进方法事件
MethodEntryRequest menr = mgr.createMethodEntryRequest();
menr.setSuspendPolicy(EventRequest.SUSPEND_NONE);
menr.enable();
// 注册出方法事件
MethodExitRequest mexr = mgr.createMethodExitRequest();
mexr.setSuspendPolicy(EventRequest.SUSPEND_NONE);
mexr.enable();
// 注册线程启动事件
ThreadStartRequest tsr = mgr.createThreadStartRequest();
tsr.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
tsr.enable();
// 注册线程结束事件
ThreadDeathRequest tdr = mgr.createThreadDeathRequest();
tdr.setSuspendPolicy(EventRequest.SUSPEND_EVENT_THREAD);
tdr.enable();
更多精彩
赞助商链接