当启动配置启动它的程序时,它负责以请求的方式调用可执行程序。启动的实现将依赖于每个启动配置的具体情况,但大多数插件都将构建一个命令行并调用运行时 exec 来启动该程序。DebugPlugin 类实现一个便于调用运行时 exec 并处理可能发生的异常的方法。客户机可以指定该 exec 的命令行和工作目录。
Process p = DebugPlugin.exec(cmdLine, workingDirectory);
一旦为正在执行的程序创建了 java.lang.Process,则它需要由调试插件进行管理。对于启动程序,需要将该进程与表示已启动的程序的 ILaunch 相关联。调试插件为系统进程定义包装器 IProcess,该包装器允许客户机访问相关联的 ILaunch 并将客户机自己的指定属性分配给该进程。另外,IProcess 还为进程定义标号并使 IStreamsProxy 与进程相关联,这使得客户机能够访问系统进程的输入、输出和错误流。也可以使用 DebugPlugin 中的实用程序方法来创建此进程包装器。
IProcess process= DebugPlugin.newProcess(launch, p, "My Process);
也可以提供指定属性的映射。
许多插件可以只依赖 DebugPlugin 中的实用程序方法来启动系统进程并在 IProcess 中包装它。对于那些在创建包装器时需要更多控制的插件,可以使进程工厂与启动配置相关联。进程工厂用来创建满足插件的特殊需要的 IProcess。进程工厂是通过标识来引用的,并应该存储在启动配置的 DebugPlugin.ATTR_PROCESS_FACTORY_ID 属性中。
进程工厂标识与实现它的类之间的关联是通过使用 org.eclipse.debug.core.processFactories 扩展点建立的。
以下示例显示 Ant 插件如何为它的启动设置进程工厂:
<extension point="org.eclipse.debug.core.processFactories"> <processFactory class="org.eclipse.ant.internal.ui.launchConfigurations.RemoteAntProcessFactory" id="org.eclipse.ant.ui.remoteAntProcessFactory"> </processFactory> </extension>
正在注册的插件负责将进程工厂标识存储在适当的启动配置属性中。