很抱歉,这个问题与Eclipse论坛中的this post重复。由于Eclipse论坛似乎不是很敏感,我在这里试试运气。我已经使用NetBeans as described here实现了此功能,但现在我需要Eclipse的相同功能。
在我的开发环境中,我必须调试的远程Java Server经常更改其IP地址(我无法改变这一事实)。所以我经常需要在Eclipse Debug Configuration中更改该服务器的IP地址,我必须更新远程Java应用程序的地址。
我能够以编程方式找到IP地址(可以从属性文件中读取),所以我也希望Eclipse使用那个“动态”IP地址,而不必每次都手动输入到GUI中地址变了。
第一个问题是:我是否甚至需要编写一个Eclipse插件来模拟这个用例?或者我可以使用命令行参数来控制正在运行的Eclipse实例吗?我真正想要的是,如果我可以从命令行触发Eclipse,将IP地址传递给Eclipse,而不是附加调试器,就像下面的“伪”命令一样:
eclipse --debugger.attach.remote;address=192.168.178.111:9009
这样我可以触发Eclipse从外部程序附加它的调试器,以IP作为参数(这是我已经用NetBeans实现的)。
第二个问题:如果我必须为此编写一个插件(它应该只提供一个简单的按钮,它会触发在属性文件中查找IP,然后请求Eclipse将其调试器附加到此IP),怎么能我开始?您能否建议我应该访问的Eclipse模块来控制Eclipse Debugger,也许还有一些文档/示例/教程如何使用它?什么是非常棒的将是一个代码片段,它显示了如何在Eclipse插件中附加Eclipse Debugger。
提前感谢每一个提示!
我已找到this quite related post: 但它只是提供了一个小提示,我可以使用哪些类。但我宁愿看一个代码示例,所以我仍然感谢一些帮助。
修改
由于我已经计划为我的日常工作编写一个具有多种功能的更大的Eclipse-Plugin-Suite(我想学习一般的Eclipse插件开发),我不想通过例如解决这个问题来解决这个问题。 hosts文件(虽然这是一个非常好的简单方法)。正如我所问,我想在Eclipse插件中附加调试器。
答案 0 :(得分:1)
您可以使用hosts file为IP地址指定名称。
这样,您始终可以使用相同的启动配置。
另一个选择是在启动时使用变量。打开启动配置对话框,单击“VM Arguments”下面的“Variables ...”按钮,然后选择“string_prompt”。
Eclipse会记住你的最后一个值。
上一个选项:您可以为您的网络设置DNS服务器,并使其解析所有人的IP地址。
答案 1 :(得分:0)
我今天提出了同样的问题。要以编程方式附加Eclipse的调试器,您可以以编程方式创建随后启动的启动配置。工作空间需要包含一个项目,该项目包含要调试的应用程序的源代码。
ILaunchConfigurationWorkingCopy remoteDebugLaunchConfig = createRemoteDebugLaunchConfiguration("ProjectNameThatHasTheSourceCode", "8000");
DebugUITools.launch(remoteDebugLaunchConfig, ILaunchManager.DEBUG_MODE);
方法createRemoteDebugConfiguration
创建远程调试启动配置:
private ILaunchConfigurationWorkingCopy createRemoteDebugLaunchConfiguration(final String projectName, final String port) throws CoreException {
ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType type = manager
.getLaunchConfigurationType(IJavaLaunchConfigurationConstants.ID_REMOTE_JAVA_APPLICATION);
final ILaunchConfigurationWorkingCopy remoteDebugConfig = type.newInstance(null, "remote debug");
// Set project
remoteDebugConfig.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME, projectName);
// Set JVM debugger connection parameters
Map<String, String> connectionParameters = new HashMap<String, String>();
connectionParameters.put("hostname", "localhost");
connectionParameters.put("port", port);
remoteDebugConfig.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CONNECT_MAP, connectionParameters);
remoteDebugConfig.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_CONNECTOR,
"org.eclipse.jdt.launching.socketAttachConnector");
return remoteDebugConfig;
}