工欲善其事,必先利其器系列--Netbeans之遠程開發


  實踐難度:★★☆☆☆

  實用性  :★★★★☆

 

  你還在采用純手工開發嗎?

  你還在采用本地開發,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

  1. 進入http://netbeans.org/ NetBeans官網下載NetBeans 7.1.2
  2. 安裝(具體過程相信不用我多說了吧)

 

  開啟下載功能

  1. 桌面右擊NetBeans快捷方式,選擇屬性—>快捷方式
  2. 在目標一欄 后面添加

-J-Dcnd.remote.download.project.action=true

  3.  確定

  下面我們就正式開始我們的遠程開發之旅吧。

  1. 打開NetBeans
  2. 創建項目文件

  工具欄—>文件—>新建項目

  (注:選擇基於現有源代碼和基於二進制的項目,后期添加的文件將存在上傳bug。)

 

  填寫項目名稱等基本信息,生成主機選擇localhost

 

  點擊完成,項目創建成功

 

  1. 導入現有源代碼或添加源代碼

  項目名稱右擊—>從文件夾添加現有項

  (注:新建文件夾無法自動加入項目,需要關閉項目,重新打開。建議采用預先創建好源碼目錄結構然后一次導入的方式,若中途需要添加新的文件夾,可以在外部添加好,然后右擊項目名稱—>刪除,重新添加一次即可。)

 

 

  1. 添加遠程主機

  既然是遠程開發,那么必須配置好遠程開發的環境,這樣IDE才能夠提供代碼完成,代碼分析等功能。

  項目名稱右擊—>設置遠程生成主機—>管理主機

 

  點擊管理組件后,將出現生成主機管理器界面

 

  點擊添加按鈕,出現新建遠程生成主機界面,填入主機名(IP)。

 

  點擊下一步,更改登錄用戶名,驗證方式選擇口令方式(若遠程端為SSH密鑰方式,則選擇SSH密鑰文件。

 

  點擊下一步—>輸入用戶密碼

 

  點擊確定,NetBeans開始自動搜索遠程主機開發環境

  (注:若自動搜索到的路徑與實際路徑不符,或者想自定義執行路徑,可在遠程主機創建完畢之后。選擇工具欄—>工具—>選項—>C/C++à生成工具,開發主機選擇欲配置的主機,編輯工具執行路徑,編輯完畢,確定即可)

 

  點擊下一步,選擇項目文件訪問方式為“系統級別文件共享(NFS、Samba等)”

  (注:訪問方式必須選系統級別文件共享)

 

  點擊完成。

 

  點擊路徑映射器,建立本地源碼與遠程主機源碼之間的映射關系

  本地路徑填入本地源代碼所處路徑,遠程路徑填入想存放源代碼的目錄。

 

  至此遠程主機添加完畢。

 

  1. 添加頭文件路徑

    為了能夠正常解析源代碼之間的包含關系,提供代碼的自動補全功能,配置額外的頭文件路徑是必不可少的步驟。

    工具—>選項—>C/C++—>代碼幫助

    點擊添加按鈕將常用頭文件路徑加入,若存在系統未解析的宏也可通過加入宏定義解決。

    (注:若自定義頭文件路徑過多時,添加顯得過於繁瑣,可通過更改配置文件實現。由於操作冗長,故此處不贅述)

 

    路徑添加完畢后,點擊確定即可。

 

  1. 項目配置結束。

    項目配置結束后,我們就可以進行正常的源碼編輯,創建工作了。

    (注:項目源代碼默認編碼為UTF-8,若導入的源碼編碼格式不符,在試圖打開源代碼是會彈出“無法使用編碼UTF-8安全地打開該文件..”的對話框。

 

    此時需要修改項目默認編碼。

    具體步驟:項目名稱右擊—>屬性—>常規

 

 

4       遠程編譯

  在源碼編輯結束后,我們需要進行源代碼的編譯工作了。

  項目源代碼目錄右擊-->上傳至….

  (注:上傳過程中可能提示源代碼映射路徑不存在,按照提示進行配置即可)

 

  代碼上傳完畢之后,選中makefile文件右擊—>make目標即可執行編譯工作。

 

  若編譯失敗,需安照提示錯誤進行源代碼修改,然后點擊修改源代碼選擇上傳,重新運行編譯即可。

 

5       遠程調試

  在代碼成功編譯后,若執行結果與預期不符,我們就需要進入代碼調試階段了,有人說,好的代碼不是寫出來的,是調出來的,可見調試工作也是相當的重要。

  對於普通應用程序的調試,由於其比較簡單只需通過菜單欄的調試按鈕即可進行,此處不進行描述。此處僅對本人常用的動態庫調試功能進行簡述。

  既然是動態庫調試,那么就要選擇運行的主程序了,通過調試—>連接調試器,連接到主程序進程。

  點擊連接調試器,出現連接界面,選擇要連接的進程,選擇項目為當前項目。

 

  點擊確定,即可連接到遠程進程。

 

  在預調試的代碼上開啟斷點功能。

 

  觸發主程序

 

  程序已經入調試階段,可通過添加自定義變量,觀察當前變量的情況。

 

  調試結束后,選擇調試—>完成調試器會話終止調試即可。

 

6       總結

   以上介紹了遠程開發,遠程編譯,遠程調試三大主要功能了。不過為了更好的使用NetBeans,我們還可以通過自定義快捷鍵,自定義代碼模版,添加版本 控制等操作進一步提升我們的效率(由於篇幅限制就不一一介紹了)。雖然NetBeans已經能夠提供遠程開發所需的大部分功能了,可依然存在不少問題,如 編譯輸出窗口不支持中文,不支持新增文件夾立即生效等等問題,希望在新版本的NetBeans中能夠有所改觀。

參考資料

http://en.wikipedia.org/wiki/NetBeans

http://www.eclipse.org/ptp/

 

(zuoca 原創文章,轉載請注明出處http://www.cnblogs.com/zuoca/articles/2582833.html)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM