使用 Java Debug Interface(JDI)调试多线程应用程序
2009-10-10 00:00:00 来源:WEB开发网本文采用第一种绑定方式阐述如何开发定制的多线程分析器,其它绑定方式可以参照 文档。
绑定过程分为三个步骤:
获取连接实例
清单 1. 获取连接实例
LaunchingConnector findLaunchingConnector() {
List connectors = Bootstrap.virtualMachineManager().allConnectors();
Iterator iter = connectors.iterator();
while (iter.hasNext()) {
Connector connector = (Connector) iter.next();
if ("com.sun.jdi.CommandLineLaunch".equals(connector.name())) {
return (LaunchingConnector) connector;
}
}
}
Bootstrap.virtualMachineManager().allConnectors() 返回所有已知的 Connector 对象实例。选择返回 com.sun.jdi.CommandLineLaunch 连接实例,表示使用第一种绑定方式。
设置连接参数
清单 2. 设置连接参数
/**参数:
* connector为清单1.中获取的Connector连接实例
* mainArgs为目标程序main函数所在的类
**/
Map connectorArguments(LaunchingConnector connector, String mainArgs) {
Map arguments = connector.defaultArguments();
Connector.Argument mainArg = (Connector.Argument) arguments.get("main");
if (mainArg == null) {
throw new Error("Bad launching connector");
}
mainArg.setValue(mainArgs);
return arguments;
}
更多精彩
赞助商链接