標籤:
轉自: http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.html
實踐難度:★★☆☆☆
實用性 :★★★★☆
你還在採用純手工開發嗎?
你還在採用本地開發,ftp到遠程主機進行編譯的繁瑣方式嗎?
你還在為不斷的切換編輯視窗,ftp視窗,ssh視窗而感到鬱悶嗎?
你還在為不能夠熟練使用linux下那命令龐雜的vi,gdb而苦惱嗎?
你還在為不能使用現代化的IDE而擔憂嗎?
……
作為與你一樣的linux C/C++程式員,我也對這一切感到鬱悶。一直很羨慕Java程式員擁有如Eclipse,Netbeans這般人性化的IDE(內嵌的代碼模版、代碼格 式化、自動完成、代碼重構等功能對於程式員來說都是有效提高開發效率的必備利器)。雖說Visual Studio,Borland Builder,Code::Block對於C/C++語言開發也是非常的方便,linux端也不乏優秀的IDE,但當碰到我們”本地開發,遠程編譯,遠 程運行”的開發模式時,一切都變得不再那麼友好。IDE自身的特性要麼無法完整發揮,要麼需要通過繁瑣的個人化配置,使用大量的外掛外掛程式才能實作類別似的效 果。我們不能像那些大牛們,用的不爽就自己寫一個出來用。一則大多數人都沒有這個功力,二則業界一定有針對此類情況的解決方案了,我們只需找到一個適合自 己的就好。終於,在不斷地尋找中,我找到了這麼一款能夠協助我們”解放雙手,解放生產力”的IDE—NetBeans7.1。網上關於遠程開發的資料為數 不多,而且大多數即使你照著操作,到最後也不一定成功。本文我將會通過一個完整的樣本向各位介紹NetBeans那強大,實用的遠程開發功能。
測試環境 |
|
本地主機 |
遠程主機: |
作業系統 |
XP Professional |
Linux 2.6.9-42.EL |
其他軟體 |
Java-JDK 1.7.0_05 NetBeans 7.1 |
GCC 3.4.6 GDB 7.4 (遠端偵錯必須使用gdb6.8+) |
1 現狀分析
在開始之前,讓我們先看看現在的linux C/C++程式員的工作方式吧。
由於使用linux端的圖形化開發環境需要消耗很大的資源,且大多數情況下我們不允許使用這樣的開發方式。使用vi開發又要配置各種外掛程式,熟悉各種命 令。我們是程式員,不是記憶體條,我們厭惡記憶那些詭異的命令。於是大多數程式員採用的開發方式都是:在本地編輯代碼,然後ftp到遠程主機,在遠程主機進 行編譯,調試。發生錯誤時,則切換回本地環境修改代碼,在ftp,編譯,調試。如果問題依然存在,重複上述操作。若程式邏輯複雜,這樣的過程可以持續到要 麼程式員奔潰,要麼程式奔潰。
目前大多數程式員使用的基本是UltraEdit和SourceInsight這兩款工具,從幾個維度進行了比對。
|
UltraEdit |
SourceInsight |
格式化 |
無 |
無 |
代碼瀏覽 |
無 |
完美支援 |
重構 |
不支援 |
支援 |
自動補全 |
簡單支援 |
完美支援 |
代碼模版 |
無 |
無 |
版本控制 |
需通過自訂外部工具實現 |
基本支援 |
遠程開發 |
不支援 |
不支援 |
遠程編譯 |
不支援 |
不支援 |
遠端偵錯 |
不支援 |
不支援 |
從可以看出,這兩款編輯器的功能相對一款IDE來說還顯得有些稚嫩。(當然他們本身也不是打著IDE的旗號在出售,進行這樣的評價多少有些不公)
2 方案比對
在最終確定推薦NetBeans之前,我也試用了多款聲稱支援遠程開發的IDE。下表對這些IDE進行了對比,以證明我向各位推薦的NetBeans的確是目前最佳的選擇。
遠程開發方案對比表 |
|
Eclipse C/C++ |
Netbeans C/C++ |
MagicUnix |
格式化 |
支援 |
支援 |
支援 |
代碼瀏覽 |
支援 |
完美支援 |
支援 |
重構 |
支援 |
完美支援 |
不支援 |
自動補全 |
支援 |
完美支援 |
支援 |
代碼模版 |
支援 |
支援 |
不支援 |
版本控制 |
支援—(測試存在問題) |
完美支援 |
支援 |
依賴外掛程式 |
RDT,PTP |
無 |
無 |
依賴服務 |
Perl,Java,SSH,RDT-Server |
SSH |
SSH |
遠程開發 |
支援 |
支援 |
支援 |
遠程編譯 |
支援 |
支援 |
支援 |
遠端偵錯 |
支援--(測試存在問題) |
完美支援 |
完美支援 |
離線支援 |
不支援 |
支援 |
不支援 |
綜合評價 |
基於Eclipse架構的遠程開發方案由IBM和HP共同參與,但是開發出的產品實是不甚好用。依賴太多,現有bug也比較多。 |
基於Netbeans架構的遠程方案應該是目前最為理想的方案了,雖然也存在不少bug,但只要合理使用,還是能發揮其特性的。 |
由國人開發的收費軟體,最近已停止更新,介面類似VC6,遠程功能比eclipse好用,唯一不足的就是不支援離線開發。 |
接下來我就詳細介紹下Netbeans的遠程開發功能吧。
3 遠程開發
(注:關於NetBeans本身就不介紹了,感興趣的話可以看看官網的介紹。基本操作由於篇幅限制也不做介紹了,多使用幾次自然就熟悉了)
安裝NetBeans
- 進入http://netbeans.org/ NetBeans官網下載NetBeans 7.1.2
- 安裝(具體過程相信不用我多說了吧)
開啟下載功能
- 案頭右擊NetBeans捷徑,選擇屬性—>捷徑
- 在目標一欄 後面添加
-J-Dcnd.remote.download.project.action=true
3. 確定
下面我們就正式開始我們的遠程開發之旅吧。
- 開啟NetBeans
- 建立專案檔
工具列—>檔案—>建立項目
(注:選擇基於現有原始碼和基於二進位的項目,後期添加的檔案將存在上傳bug。)
填寫項目名稱等基本資料,產生主機選擇localhost
點擊完成,項目建立成功
- 匯入現有原始碼或添加原始碼
項目名稱右擊—>從檔案夾添加現有項
(註:建立檔案夾無法自動加入項目,需要關閉項目,重新開啟。建議採用預先建立好源碼目錄結構然後一次匯入的方式,若中途需要添加新的檔案夾,可以在外部添加好,然後右擊項目名稱—>刪除,重新添加一次即可。)
- 添加遠程主機
既然是遠程開發,那麼必須配置好遠程開發的環境,這樣IDE才能夠提供程式碼完成,程式碼分析等功能。
項目名稱右擊—>設定遠程產生主機—>管理主機
點擊管理組件後,將出現產生主機管理器介面
點擊添加按鈕,出現建立遠程產生主機介面,填入主機名稱(IP)。
點擊下一步,更改登入使用者名稱,驗證方式選擇口令方式(若遠程端為SSH密鑰方式,則選擇SSH密鑰檔案。
點擊下一步—>輸入使用者密碼
點擊確定,NetBeans開始自動搜尋遠程主機開發環境
(註:若自動搜尋到的路徑與實際路徑不符,或者想自訂執行路徑,可在遠程主機建立完畢之後。選擇工具列—>工具—>選項—>C/C++à產生工具,開發主機選擇欲配置的主機,編輯工具執行路徑,編輯完畢,確定即可)
點擊下一步,選擇專案檔訪問方式為“系統層級檔案分享權限設定(NFS、Samba等)”
(注:訪問方式必須選系統層級檔案分享權限設定)
點擊完成。
點擊路徑映射器,建立本地源碼與遠程主機源碼之間的映射關係
本地路徑填入本地原始碼所處路徑,遠程路徑填入想存放原始碼的目錄。
至此遠程主機添加完畢。
- 添加標頭檔路徑
為了能夠正常解析原始碼之間的內含項目關聯性,提供代碼的自動補全功能,配置額外的標頭檔路徑是必不可少的步驟。
工具—>選項—>C/C++—>代碼協助
點擊添加按鈕將常用標頭檔路徑加入,若存在系統未解析的宏也可通過加入宏定義解決。
(註:若自訂標頭檔路徑過多時,添加顯得過於繁瑣,可通過更改設定檔實現。由於操作冗長,故此處不贅述)
路徑添加完畢後,點擊確定即可。
- 項目配置結束。
項目配置結束後,我們就可以進行正常的源碼編輯,建立工作了。
(注:項目原始碼預設編碼為UTF-8,若匯入的源碼編碼格式不符,在試圖開啟原始碼是會彈出“無法使用編碼UTF-8安全地開啟該檔案..”的對話方塊。
此時需要修改項目預設編碼。
具體步驟:項目名稱右擊—>屬性—>常規
4 遠程編譯
在源碼編輯結束後,我們需要進行原始碼的編譯工作了。
項目原始碼目錄右擊-->上傳至….
(注:上傳過程中可能提示原始碼映射路徑不存在,按照提示進行配置即可)
代碼上傳完畢之後,選中makefile檔案右擊—>make目標即可執行編譯工作。
若編譯失敗,需安照提示錯誤進行原始碼修改,然後點擊修改原始碼選擇上傳,重新運行編譯即可。
5 遠端偵錯
在代碼成功編譯後,若執行結果與預期不符,我們就需要進入代碼調試階段了,有人說,好的代碼不是寫出來的,是調出來的,可見調試工作也是相當的重要。
對於普通應用程式的調試,由於其比較簡單只需通過功能表列的調試按鈕即可進行,此處不進行描述。此處僅對本人常用的動態庫調試功能進行簡述。
既然是動態庫調試,那麼就要選擇啟動並執行主程式了,通過調試—>串連調試器,串連到主程式進程。
點擊串連調試器,出現串連介面,選擇要串連的進程,選擇項目為當前項目。
點擊確定,即可串連到遠程進程。
在預調試的代碼上開啟斷點功能。
觸發主程式
程式已經入調試階段,可通過添加自訂變數,觀察當前變數的情況。
調試結束後,選擇調試—>完成調試器會話終止調試即可。
6 總結
以上介紹了遠程開發,遠程編譯,遠端偵錯三大主要功能了。不過為了更好的使用NetBeans,我們還可以通過自訂快速鍵,自訂代碼模版,添加版本 控制等操作進一步提升我們的效率(由於篇幅限制就不一一介紹了)。雖然NetBeans已經能夠提供遠程開發所需的大部分功能了,可依然存在不少問題,如 編譯輸出視窗不支援中文,不支援新增檔案夾立即生效等等問題,希望在新版本的NetBeans中能夠有所改觀。
參考資料
http://en.wikipedia.org/wiki/NetBeans
http://www.eclipse.org/ptp/
轉: NetBean 遠程開發的好文2 --> 工欲善其事,必先利其器系列--Netbeans之遠程開發