转: NetBean 远程开发的好文2 --> 工欲善其事,必先利其器系列--Netbeans之远程开发
转自: 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
转: NetBean 远程开发的好文2 --> 工欲善其事,必先利其器系列--Netbeans之远程开发的更多相关文章
- 转: 工欲善其事,必先利其器系列--Netbeans之远程开发
转自: http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.html 工欲善 ...
- 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
为了方便大家使用ZCELL,应网友要求,整理编写了相关文档,现与产品一起同步发布,供大家下载使用,使用过程中如有疑问,请与我QQ联系. 智表(ZCELL)V1.4.0版本 功能清单文档下载地址: 功 ...
- 《Java开发学习大纲文档》V7.0
<Java开发学习大纲文档>V7.0简介: 本文档是根据企业开发所需要掌握的知识点大纲进行总结汇编,是Java开发工程师必备知识体系,系统化学习针对性非常强,逻辑分析能力非常清晰;技术方面 ...
- 《Java开发学习大纲文档》V6.0(已经不公布了,请查看第七版)
<Java开发大纲学习文档第六版>简介: 有需要的私聊作者QQ:253173641.
- Prism 4 文档 ---第4章 模块化应用程序开发
模块化应用程序是指将一个应用程序拆分成一系列的可以组合的功能单元.一个客户端模块封装了应用程序的一部分,并且通常是一系列相关的关注点.它可以包含一个相关的组件的集合,就像用户界面,应用程序功能,和一些 ...
- 【VS开发】单文档中往视图中加入控件
[VS开发]单文档中往视图中加入控件 标签(空格分隔): [VS开发] 分隔视图的但文档窗口,要显示控件,推荐使用CFormView或者CCtrlView,前者和对话框的做法一致. 在MainFram ...
- 《Java开发学习大纲文档》V8.0
<Java开发学习大纲文档>V8.0 第八版是以实战作为核心,同时也包含前面所有版本的精华部分,第八版加入的部分有云开发(阿里云OSS存储.(github)gitlab+docker网站自 ...
- PSP个人软件开发工具需求分析文档
第一部分:前景与范围 1.业务需求 1.1 背景 在目前的软件项目开发过程中,进度计划总是非常不准确,经常出现延期,而且大多数都无法给出一个相对比较准确的延迟时间.即使使用用例包.用例的方式组织需求, ...
- 【转】使用NetBeans和Eclipse开发PHP应用程序
[51CTO独家特稿]各位用户如果单独看NetBeans和Eclipse的市场占有率,你可能会认为使用其中任何一种IDE开发PHP应用程序都没有 问题,例如: 1.NetBeans:一款开源的集成开发 ...
随机推荐
- bigdecimal的使用
BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成.如果为零或正数,则标度是小数点后的位数.如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂. ...
- Reversion windows 2008 R2 STD to Datacenter
1.To determine the installed edition, run: DISM /online /Get-CurrentEdition 2.To check the possible ...
- 汕头市队赛 SRM 07 C 整洁的麻将桌
C 整洁的麻将桌 SRM 07 背景&&描述 天才麻将少女KPM立志要在日麻界闯出一番名堂. KPM上周双打了n场麻将,但她这次没控分,而且因为是全民参与的麻将大赛,所以她的名 ...
- noip 2010 三国游戏
三国游戏 三国游戏 描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有N 位武将(N为偶数且不小于4),任 ...
- 自定义View Draw过程(4)
目录 目录 1. 知识基础 具体请看我写的另外一篇文章:自定义View基础 - 最易懂的自定义View原理系列 2. draw过程作用 绘制View视图 3. draw过程详解 同measure.la ...
- 使用srvany.exe把程序安装成windows服务
srvany.exe介绍 srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说srva ...
- 如何通过友盟分析发布后App崩溃日志
http://blog.csdn.net/totogo2010/article/details/39892467 要分析崩溃日志,首先需要保留发布时的编译出来的.xcarchive文件.这个文件包含了 ...
- ios 改变图片大小缩放方法
http://www.cnblogs.com/zhangdadi/archive/2012/11/17/2774919.html http://bbs.csdn.net/topics/39089858 ...
- ObjectInputStream&ObjectOutputStream工具类
序列化:将数据保存到文件:ObjectOutputStream; 反序列化:将文件中的数据显示出来:ObjectInputStream; 在反序列化程序中运行后能够正常输出Person的相关信息, ...
- 如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)
因为公司网站合并,要将我们的DJANGO项目从IP的顶级目录迁移到域名的二级目录. 以前硬编码的URL可惨了. 还涉及到upload目录,静态目录,websocket目录. 全用{% url %}问题 ...