转自: http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.htmlhtml
实践难度:★★☆☆☆linux
实用性 :★★★★☆程序员
你还在采用纯手工开发吗?安全
你还在采用本地开发,ftp到远程主机进行编译的繁琐方式吗?框架
你还在为不断的切换编辑窗口,ftp窗口,ssh窗口而感到郁闷吗?eclipse
你还在为不可以熟练使用linux下那命令庞杂的vi,gdb而苦恼吗?ssh
你还在为不能使用现代化的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+) |
在开始以前,让咱们先看看如今的linux C/C++程序员的工做方式吧。
因为使用linux端的图形化开发环境须要消耗很大的资源,且大多数状况下咱们不容许使用这样的开发方式。使用vi开发又要配置各类插件,熟悉各类命 令。咱们是程序员,不是内存条,咱们厌恶记忆那些诡异的命令。因而大多数程序员采用的开发方式都是:在本地编辑代码,而后ftp到远程主机,在远程主机进 行编译,调试。发生错误时,则切换回本地环境修改代码,在ftp,编译,调试。若是问题依然存在,重复上述操做。若程序逻辑复杂,这样的过程能够持续到要 么程序员奔溃,要么程序奔溃。
目前大多数程序员使用的基本是UltraEdit和SourceInsight这两款工具,下图从几个维度进行了比对。
|
UltraEdit |
SourceInsight |
格式化 |
无 |
无 |
代码浏览 |
无 |
完美支持 |
重构 |
不支持 |
支持 |
自动补全 |
简单支持 |
完美支持 |
代码模版 |
无 |
无 |
版本控制 |
需经过自定义外部工具实现 |
基本支持 |
远程开发 |
不支持 |
不支持 |
远程编译 |
不支持 |
不支持 |
远程调试 |
不支持 |
不支持 |
从上图能够看出,这两款编辑器的功能相对一款IDE来讲还显得有些稚嫩。(固然他们自己也不是打着IDE的旗号在出售,进行这样的评价多少有些不公)
在最终肯定推荐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的远程开发功能吧。
(注:关于NetBeans自己就不介绍了,感兴趣的话能够看看官网的介绍。基本操做因为篇幅限制也不作介绍了,多使用几回天然就熟悉了)
安装NetBeans
开启下载功能
-J-Dcnd.remote.download.project.action=true
3. 肯定
下面咱们就正式开始咱们的远程开发之旅吧。
工具栏—>文件—>新建项目
(注:选择基于现有源代码和基于二进制的项目,后期添加的文件将存在上传bug。)
填写项目名称等基本信息,生成主机选择localhost
点击完成,项目建立成功
项目名称右击—>从文件夹添加现有项
(注:新建文件夹没法自动加入项目,须要关闭项目,从新打开。建议采用预先建立好源码目录结构而后一次导入的方式,若中途须要添加新的文件夹,能够在外部添加好,而后右击项目名称—>删除,从新添加一次便可。)
既然是远程开发,那么必须配置好远程开发的环境,这样IDE才可以提供代码完成,代码分析等功能。
项目名称右击—>设置远程生成主机—>管理主机
点击管理组件后,将出现生成主机管理器界面
点击添加按钮,出现新建远程生成主机界面,填入主机名(IP)。
点击下一步,更改登陆用户名,验证方式选择口令方式(若远程端为SSH密钥方式,则选择SSH密钥文件。
点击下一步—>输入用户密码
点击肯定,NetBeans开始自动搜索远程主机开发环境
(注:若自动搜索到的路径与实际路径不符,或者想自定义执行路径,可在远程主机建立完毕以后。选择工具栏—>工具—>选项—>C/C++à生成工具,开发主机选择欲配置的主机,编辑工具执行路径,编辑完毕,肯定便可)
点击下一步,选择项目文件访问方式为“系统级别文件共享(NFS、Samba等)”
(注:访问方式必须选系统级别文件共享)
点击完成。
点击路径映射器,创建本地源码与远程主机源码之间的映射关系
本地路径填入本地源代码所处路径,远程路径填入想存放源代码的目录。
至此远程主机添加完毕。
为了可以正常解析源代码之间的包含关系,提供代码的自动补全功能,配置额外的头文件路径是必不可少的步骤。
工具—>选项—>C/C++—>代码帮助
点击添加按钮将经常使用头文件路径加入,若存在系统未解析的宏也可经过加入宏定义解决。
(注:若自定义头文件路径过多时,添加显得过于繁琐,可经过更改配置文件实现。因为操做冗长,故此处不赘述)
路径添加完毕后,点击肯定便可。
项目配置结束后,咱们就能够进行正常的源码编辑,建立工做了。
(注:项目源代码默认编码为UTF-8,若导入的源码编码格式不符,在试图打开源代码是会弹出“没法使用编码UTF-8安全地打开该文件..”的对话框。
此时须要修改项目默认编码。
具体步骤:项目名称右击—>属性—>常规
在源码编辑结束后,咱们须要进行源代码的编译工做了。
项目源代码目录右击-->上传至….
(注:上传过程当中可能提示源代码映射路径不存在,按照提示进行配置便可)
代码上传完毕以后,选中makefile文件右击—>make目标便可执行编译工做。
若编译失败,需安照提示错误进行源代码修改,而后点击修改源代码选择上传,从新运行编译便可。
在代码成功编译后,若执行结果与预期不符,咱们就须要进入代码调试阶段了,有人说,好的代码不是写出来的,是调出来的,可见调试工做也是至关的重要。
对于普通应用程序的调试,因为其比较简单只需经过菜单栏的调试按钮便可进行,此处不进行描述。此处仅对本人经常使用的动态库调试功能进行简述。
既然是动态库调试,那么就要选择运行的主程序了,经过调试—>链接调试器,链接到主程序进程。
点击链接调试器,出现链接界面,选择要链接的进程,选择项目为当前项目。
点击肯定,便可链接到远程进程。
在预调试的代码上开启断点功能。
触发主程序
程序已经入调试阶段,可经过添加自定义变量,观察当前变量的状况。
调试结束后,选择调试—>完成调试器会话终止调试便可。
以上介绍了远程开发,远程编译,远程调试三大主要功能了。不过为了更好的使用NetBeans,咱们还能够经过自定义快捷键,自定义代码模版,添加版本 控制等操做进一步提高咱们的效率(因为篇幅限制就不一一介绍了)。虽然NetBeans已经可以提供远程开发所需的大部分功能了,可依然存在很多问题,如 编译输出窗口不支持中文,不支持新增文件夹当即生效等等问题,但愿在新版本的NetBeans中可以有所改观。