[英]Eclipse Plugin Action: Attach Eclipse debugger to a Remote Java Application programmatically
抱歉,這個問題與Eclipse論壇中的帖子重復。 由於Eclipse論壇似乎反應不靈敏,因此我在這里碰碰運氣。 我已經實現了這個功能與NetBeans, 這里描述的 ,但現在我需要為Eclipse相同的功能。
在我的開發環境中,我必須調試的遠程Java Server經常更改其IP地址(我無法更改該事實)。 因此,我經常必須在Eclipse調試配置中更改該服務器的IP地址,在此我必須更新遠程Java應用程序的地址。
我能夠以編程方式找到IP地址(可以從屬性文件中讀取),因此我也希望Eclipse使用該“動態” IP地址,而不必每次地址更改時都將其手動輸入到GUI中。 。
第一個問題是:我是否甚至需要編寫一個Eclipse插件來對此用例進行建模? 或者我可以使用命令行參數來控制正在運行的Eclipse實例嗎? 我真正想要的是,如果我可以從命令行觸發Eclipse,將IP地址傳遞給Eclipse,那么它應該附加調試器,例如以下“ pseudo”命令:
eclipse --debugger.attach.remote;address=192.168.178.111:9009
這樣,我可以觸發Eclipse從外部程序以IP作為參數附加它的調試器(這就是我已經使用NetBeans實現的功能)。
第二個問題:如果我必須為此編寫一個插件(應該只提供一個簡單的按鈕,它會觸發在屬性文件中查找IP,然后請求Eclipse將其調試器附加到該IP),我如何開始? 您能為我建議我用來控制Eclipse Debugger的Eclipse模塊,也許還有一些文檔/示例/教程如何使用它? 一個非常棒的代碼片段將顯示如何將Eclipse調試器附加到Eclipse插件中。
預先感謝您的每一個提示!
我已經找到了這篇很相關的文章 :但這只是一個小提示,我可以使用的類。 但是我寧願看到一個代碼示例,所以我仍然感謝一些幫助。
編輯:
由於我已經計划為日常工作編寫具有更大功能的更大的Eclipse-Plugin-Suite(並且我想學習一般的Eclipse插件開發),所以我不想通過例如hosts文件來解決此問題(盡管它是一個非常好的簡單方法)。 如我所問,我想從Eclipse插件中附加調試器。
您可以使用hosts文件為IP地址分配名稱。
這樣,您可以始終使用相同的啟動配置。
另一種選擇是在啟動中使用變量。 打開啟動配置對話框,單擊“ VM Arguments”下的“ Variables ...”按鈕,然后選擇“ string_prompt”。
Eclipse將為您記住最后一個值。
最后一個選擇:您可以為您的網絡設置DNS服務器,並使其解析每個人的IP地址。
我今天提出了同樣的問題。 要以編程方式附加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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.