WEB开发网
开发学院软件开发Java 使用 Java Debug Interface(JDI)调试多线程应用... 阅读

使用 Java Debug Interface(JDI)调试多线程应用程序

 2009-10-10 00:00:00 来源:WEB开发网   
核心提示: 每个连接实例都有对应的默认参数,启动连接之前需要设置必须的参数,使用 Java Debug Interface(JDI)调试多线程应用程序(5),对于 CommandLineLaunch 连接实例需要设置主程序启动目标程序虚拟机实例所需的参数,启动连接,事件发生时,虚拟机将相关事件信息放入事件队

每个连接实例都有对应的默认参数,启动连接之前需要设置必须的参数,对于 CommandLineLaunch 连接实例需要设置主程序启动目标程序虚拟机实例所需的参数。

启动连接,获取目标程序虚拟机实例

清单 3. 启动连接

/**参数: 
* mainArgs为目标程序main函数所在的类 
**/ 
VirtualMachine launchTarget(String mainArgs) { 
  //findLaunchingConnector:获取连接 
  LaunchingConnector connector = findLaunchingConnector(); 
  //connectorArguments:设置连接参数 
  Map arguments = connectorArguments(connector, mainArgs); 
  try {  
    return connector.launch(arguments);//启动连接 
  } catch (IOException exc) {  
    throw new Error("Unable to launch target VM: " + exc); 
  } catch (IllegalConnectorArgumentsException exc) { 
    throw new Error("Internal error: " + exc); 
  } catch (VMStartException exc) { 
    throw new Error("Target VM failed to initialize: " + exc.getMessage()); 
  } 
} 

清单 1 和清单 2 分别获取连接实例和启动所需的变量,通过调用 connector.launch(arguments) 启动连接,实现了分析器和目标程序的绑定。

注册事件

分析器和目标程序之间采用基于事件的模式进行通信。分析器向虚拟机实例注册所关注的事件。事件发生时,虚拟机将相关事件信息放入事件队列中,采用 生产者 - 消费者 的模式与分析器同步。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Java Debug

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接