Linux程序设计笔记(第9章 开发工具)
来源:互联网 发布:c语言双引号作用 编辑:程序博客网 时间:2024/05/21 07:57
1.编辑器
Notepad++是一款Windows环境下免费开源的代码编辑器,支持的语言有C,C++,Java,C#,XML,HTML,PHP,Javascript等。
Vi是所有Unix及Linux系统下标准的编辑器,可以分为三种状态即:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。
Vim即Vi IMproved,从 Vi 发展出来的一个文本编辑器 ,代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
Emacs即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。
Source Insight是一个面向项目开发的程序编辑器和代码浏览器,它拥有内置的对C/C++, C#和Java等程序的分析。
2.编译器
cc是Unix系统的C Compiler,Linux下的cc是gcc符号连接,可以通过$ls –l /usr/bin/cc来简单察看,该变量是make程序的内建变量,默认指向gcc。
gcc原名是GNU C Compiler,后因扩展为包含多种语言的编译器,改名为GNU Collection Compiler,即GNU编译器套装。
gcc++是GNU编译器套装中用于编译C++的编译器。
注:
符号链接是一种特殊类型的文件,它的内容只是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当您在命令行或程序里提到符号链接的时候,您实际上进入了它指向的文件,前提是这个文件是存在的。
3.调试器
gdb是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
kgdb是一个补丁,它可以让我们在远端主机上通过串口利用gdb的所有功能对内核进行调试。这需要两台计算机,第一台运行带偶kgdb补丁的内核,第二台通过串行线使用gdb对第一台进行调试。
kdb,与kgdb相比,kdb的主要优点之一是它不需要用另一台计算机进行调试,使得调试内核在本地主机上就可以进行。
kprobes是一个可以动态地收集调试和性能信息的工具,利用它我们很容易的将断点插入到正在运行的内核之中,并且同时指定断点命中时需要执行的函数。
systemtap,是基于kprobes进行实现的一个诊断linux系统性能或功能问题的调试工具,它提供了一种简单的脚本语言,我们不用再去编写内核模块,而是只需要写一些脚本,然后通过systemtap提供的命令接口就可以轻松地对正在运行的内核进行调试,进而消除了之前调试内核时那些插入调试代码、重新编译安装重启内核等琐碎的工作。
kdump,上面几种调试工具很难处理已经崩溃的系统。通常调查系统崩溃原因最好的方法就是保存(dump)系统崩溃时的所有信息(比如CPU寄存器的值、内存中的数据等),然后再进行分析。kdump可以保存系统崩溃时状态,是一种非常可信赖的内核崩溃转储机制。它利用了kexec技术,当系统崩溃时,kdump使用kexec快速启动到另一个linux内核,由第二个内核完成对信息的dump,从而保存了系统崩溃的事故现场。
硬件工具,嵌入式系统中,通常还会使用一些硬件工具进行内核调试。最基本的工具是示波器,也会用到仿真器进行内核调试,如ICE和BM/JTAG调试器。
4.IDE
Windows环境下:
Visual Studio 2010,是Microsoft推出目的前最流行的Windows平台应用程序开发环境。
Linux环境下:
KDevelop是根据GNU通用公共许可证(GPL)的条款发布的一个自由软件,用于K桌面环境(KDE)中C和C++程序的IDE
5.版本控制
Unix/Linux中几个被广泛使用的用于管理源文件的系统:
1> SCCS:源代码控制系统,由AT&T在系统V版本的UNIX中引入的最初的源代码控制系统。
2> RCS:版本控制系统,由自由软件基金会发布的作为SCCS的一个免费替换系统。SCCS基本上已被RCS取代。
3> CVS: 并发版本控制系统,是一个比SCCS和RCS更高级的工具,它用于基于互联网的协同开发。可通过网络使用,允许并行开发。
4> Subversion:一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。
5> Git:一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。
接下来,重点简述Subversion和Git。
* Subversion
Subversion是一个“集中式”的信息共享系统。版本库是Subversion的核心部分,是数据的中央仓库。版本库以典型的文件和目录结构形式文件系统树来保存信息。任意数量的客户端连接到Subversion版本库,读取、修改这些文件。客户端通过写数据将信息分享给其他人,通过读取数据获取别人共享的信息。
如果仅需要安装一个版本库,那么只需要构建一个Subversion客户端,客户端可以是命令行客户端,也可以是GUI客户端。
如果需要一个网络的版本库,那么需要安装Apache2服务器或者一个Subversion服务器。
Subvesion服务器端:
* CollabNet
* SlikSVN
* VisualSVN
* WANdisco
* Win32Svn
Subversion客户端:
* websvn
* TortoiseSVN
推荐文章:
SVN服务器搭建与使用(一)
SVN服务器搭建与使用(二)
SVN服务器搭建与使用(三)
* Git
Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。
GitHub是一个利用Git提供免费的代码托管服务的网站(类似的网站还有老牌的SourceForge),很多著名的项目都托管在上面。
- Linux程序设计笔记(第9章 开发工具)
- Linux程序设计笔记(第4章 Linux环境)
- Linux程序设计笔记(第1章 入门)
- Linux程序设计笔记(第3章 文件操作)
- Linux程序设计笔记(第10章 调试)
- Linux程序设计笔记(第11章 进程和信号)
- Linux程序设计笔记(第12章 POSIX线程)
- Linux程序设计笔记(第15章 套接字)
- [Linux程序设计笔记]第12章:管道
- 《Linux程序设计》学习笔记09——开发工具
- Linux程序设计笔记 第2章shell程序设计
- Linux程序设计笔记(第13章 进程间通信:管道)
- Linux程序设计笔记(第14章 信号量、共享内存和消息队列)
- 《Linux程序设计》——开发工具
- 《Linux程序设计》第4版 核心笔记
- 《Java7程序设计》第24章 并发工具
- 《Java7程序设计》第24章 并发工具
- 第2章 PL/SQL开发工具 笔记
- Linux安装软件有关的命令(dpkg 安装deb包)
- Linux程序设计笔记(第3章 文件操作)
- 设置UIView的边界为圆角矩形
- 理解Linux系统/etc/init.d目录和/etc/rc.local脚本
- 进程间通信与线程间通信简单总结
- Linux程序设计笔记(第9章 开发工具)
- SPRINGMVC的核心原理
- POJ1990 MooFest 树状数组(Binary Indexed Tree,BIT)
- Linux程序设计笔记(第10章 调试)
- opengl
- Linux程序设计笔记(第11章 进程和信号)
- 【整理】编程单词缩写规则
- 2014最新搭建Android开发环境步骤
- Android:Handler