我正在编写一个插件来扩展Eclipse以获得自定义编程语言。我有所有启动配置工作,自定义语言中的任何程序都正确启动但我似乎无法激活Debug视图中的Terminate按钮。
根据我的研究,我知道实现调试器框架提供了Terminate操作,但是,我不想在这个阶段实现框架,并且只想选择终止程序而不是通过任务管理器取消。这可能吗?或者调试器框架是唯一的方法吗?
这是LaunchConfigurationDelegate类的代码,
public void launch(ILaunchConfiguration configuration, String mode,
ILaunch launch, IProgressMonitor monitor) throws CoreException {
// getting the resource from the workspace
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
List<String> filenames = configuration.getAttribute(RELATIVE_PATH,
Collections.EMPTY_LIST);
List<String> rawPaths = configuration.getAttribute(RAW_PATH,
Collections.EMPTY_LIST);
List<String> projPaths = configuration.getAttribute(PROJECT_PATH,
Collections.EMPTY_LIST);
//CustomRunner is the interface to manage the custom language execution
CustomRunner runner = null;
try {
CustomOutputHandler outHand = new CustomOutputHandler();
runner = new CustomRunner(new File(projPaths.get(0)));
runner.setOutputHandler(outHand);
for (int i = 0; i < filenames.size(); i++) {
IPath temp = new Path(filenames.get(i));
IResource CustomFile = root.findMember(temp);
if (CustomFile == null) {
String msg = "The file "
+ "<"
+ temp.toString()
+ ">"
+ " could not be found in the workspace.\nIt may have been deleted or renamed.";
throw new FileNotFoundException(msg);
}
CustomFile.deleteMarkers(IMarker.PROBLEM, false,
IResource.DEPTH_INFINITE);
CustomErrorHandler errHand = new CustomErrorHandler(CustomFile);
runner.setErrorHandler(errHand);
//Runs the custom language file
runner.run(rawPaths.get(i));
}
之后只有一堆捕获块。
我现在需要能够通过Debug视图终止此启动,并且在运行模式的情况下通过Run菜单的terminate命令终止此启动。
我现阶段没有任何DebugTarget。我的问题是:是否有另一种方法可以在不扩展调试框架的情况下终止此次启动?
我在这个启动方法中尝试了launch.Terminate(),但是没有用。
答案 0 :(得分:0)
除非您扩展Platform-debug支持,否则无法挂接到Debug视图中的Terminate按钮 - 至少没有用于此的API。您可以入侵调试框架的内部以添加支持而不进行扩展,但扩展可能比这更容易,并且可以在Eclipse的未来版本中使用