转自: http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.html

工欲善其事,必先利其器系列--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/

转: 工欲善其事,必先利其器系列--Netbeans之远程开发的更多相关文章

  1. 转: NetBean 远程开发的好文2 --> 工欲善其事,必先利其器系列--Netbeans之远程开发

    转自:  http://www.cnblogs.com/zuoca/archive/2012/07/09/Remote_Development_With_Netbeans_origin.html 实践 ...

  2. 工具系列 | VScode Remote 远程开发与调试(告别SSH)

    简介 最近VScode发布了远程编程与调试的插件Remote Development,使用这个插件可以在很多情况下代替vim直接远程修改与调试服务器上的代码,同时具备代码高亮与补全功能,就和在本地使用 ...

  3. 工欲善其事必先利其器系列之:在VS里面折叠js代码

    之前用vs写js的时候经常因为js代码过长而且不能像cs文件里面的方法一样进行折叠而抓狂,直到在扩展库发现了这款插件有了它就可以把代码进行折叠了 插件地址

  4. 工欲善其事必先利其器系列之:更换Visual Studio代码风格.

    前言:如果你厌倦了默认的VS的背景颜色,可以在studiostyl下载.vssettinggs文件,将其导入VS中,黑色的风格还是蛮不错的,如果用的12的话就没这个必要了我觉得. 从网站下载后会得到扩 ...

  5. 工欲善其事必先利其器系列之:更换Visual Studio主题.

    前言:如果你厌烦的vs2010的蓝色风格主题,可以使用Visual Studio Color Theme Editor这款插件来改变主题风格,不过我还是喜欢METRO风格. 效果图预览: Windwo ...

  6. 单片机开发——02工欲善其事必先利其器(Proteus软件安装破解)

    在单片机开发工程中,博主经常通过模拟软件Proteus进行模拟仿真,将编译生成的"HEX"文件下载在单片机芯片中,然后进行后期的debug工作,当模拟仿真完成之后,进行硬件测试部分 ...

  7. 单片机开发——01工欲善其事必先利其器(Keil软件安装破解)

        本文是博主<单片机开发>博客第一篇文章,主要讲述51单片机编程软件Keil uVision4的安装及破解过程. 1. Keil uVision4安装包文件      PATH:链接 ...

  8. NetBean 远程开发的好文1 --> NetBeans的远程Linux C开发实践

    from:  http://blog.csdn.net/jacktan/article/details/9268535 一直以来总觉得NetBeans生活在Eclipse的阴影下,同样做为一款不错的基 ...

  9. 转:NetBeans的远程Linux C开发实践

    转: http://blog.csdn.net/jacktan/article/details/9268535 一直以来总觉得NetBeans生活在Eclipse的阴影下,同样做为一款不错的基于Jav ...

随机推荐

  1. centos7 parted 扩容

    (系统:vmware上的centos7.4 ,使用工具:parted分区命令.) 最近发现磁盘不够用了,需要加点.## WARNING ! 下面是实验过程,不代表生产环境.若有重要数据请操作前备份. ...

  2. 【php】 php能做什么

    来源:php官方文档 网站和 web 应用程序(服务器端脚本) 命令行脚本 桌面(GUI)应用程序 相信大多数人都不知道第三种,用php竟然可以写GUI,当然是基于PHP-GTK扩展写的

  3. kafka异常问题汇总

    1.报错:: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.NotLeaderForPartition ...

  4. git 常用命令及虚拟机服务器仓库搭建

    $ git config --global user.email "you@example.com" $ git config --global user.name "Y ...

  5. solr DIH 设置定时索引

    1 web.xml中加入 web.xml所在目录 /opt/solr-7.7.1/server/solr-webapp/webapp/WEB-INF <listener> <list ...

  6. slave_net_timeout 问题一则

    [背景]   对一套数据库集群进行5.5升级到5.6之后,alter.log 报warning异常. 2015-02-03 15:44:51 19633 [Warning] Storing MySQL ...

  7. 在 Yii2 项目中使用 Composer 添加 FontAwesome 字体资源

    2014-06-21 19:05 原文 简体 繁體 2,123 次围观 前天帮同事改个十年前的网站 bug,页面上一堆 include require 不禁让人抱头痛哭.看到 V2EX 上的讨论说,写 ...

  8. 第五部分 linux系统管理员 开机流程 模组管理 与loader

    第五部分   linux系统管理员  开机流程  模组管理  与loader   开机流程分析 cmos保存电脑硬件的参数 bios 基本的输入输出系统  读取硬件的软件 MBR  master bo ...

  9. [android开发篇] 权限

    Android 应用采用 Java 编程语言编写.Android SDK 工具将您的代码 — 连同任何数据和资源文件 — 编译到一个 APK:Android 软件包,即带有 .apk 后缀的存档文件中 ...

  10. 编辑被标记为“只读”的Word文档

    从邮件接收到的Word文档,打开时总是被标记为“只读”,在阅读时对其进行编辑,但不能保存,会提示文档为只读的.要想对其进行编辑并保存,需要进行一定的操作. 进入文件所在的目录,鼠标右键点击Word文档 ...