vi: vi 编辑器是 Linux 最基本的功能强大的文本编辑器,工作在字符模式下,不需要图形界面,没有菜单,只有命令,且命令繁多,但在系统和服务器管理中的功能很强大。 vi 的三种基本工作模式:命令行模式、文本输入模式和末行模式。 优点:效率高 缺点:命令繁杂 详细命令说明见 http://man.linuxde.net/vi
vim: vim 是在 vi 的基础上改进的,并增加了好多特性的功能强大,高度可定制的文本编辑器;代码补全、编译及错误跳转等方便编程的功能特别丰富。 vim 的三种基本工作模式:命令模式、插入模式、普通模式 优点:命令灵活组合使用,高效;可以完成复杂的编辑与格式化功能。 缺点:初次使用比较难,对于普通编辑器而言操作复杂。 详细命令说明见 https://www.cnblogs.com/YuanYe1/p/5241232.html
nano: 体积小巧而功能强大,字符终端的文本编辑器。可以打开指定文件进行编辑,自动对文件进行断行 (加 -w 可避免)。 优点:简单,适合初学者。 缺点:自动换行用于 Linux 下的长命令有时会使系统失灵。 详细命令说明见 http://man.linuxde.net/nano
sed: sed 是一种流编辑器,主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。它在文本处理中能够完美的配合正则表达式使用。处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 优点:简单 缺点:对列处理功能相对差点 详细命令说明见 http://man.linuxde.net/sed
pico: pico 是功能强大全屏幕,以显示导向为主的文本编辑器,它伴随着处理电子邮件和新闻组的程序 pine 而来。pico 的基本功能包括文本输入,文本搜索,拼写检查,文件浏览,文本拷贝、剪切和粘贴。 优点:简单易用 缺点:pico 并不具备字处理 程序中常见的增强功能 详细命令说明见 http://man.linuxde.net/pico
emacs: Emacs 是一种功能超强的文本处理程序,或者文本编辑器,可视为伪编辑器的操作系统。C 语言构成了 emacs 的底层,包括 Emacs Lisp 的解释器。而 Emacs Lisp 则是负责了 Emacs Lisp 的建筑物上层,包括扩展、界面等。 Emacs 的三种基本对象是: 帧 (frame)、窗口 (window)、缓冲区 (buffer)。 优点:有足够的扩展 缺点:emacs 没默认快捷键的命令 详细命令说明见 http://man.linuxde.net/emacs
jed: jed 命令用于编辑文本文件;主要用用途是编辑程序的源代码, 支持彩色语法加亮显示。 详细命令说明见 http://man.linuxde.net/jed
joe: joe 是一个功能强大的全屏幕文本编辑程序。操作的复杂度要比 Pico 高一点,但是功能较为齐全。Joe 一次可开启多个文件,每个文件各放在一个编辑区内,并可在文件之间执行剪贴的动作。 详细命令说明见 http://man.linuxde.net/joe
ed: ed 命令用于文本编辑,是 Linux 中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作。对于编辑大文件或对于在 shell 脚本程序中进行文本编辑很有用。 详细命令说明见 http://man.linuxde.net/ed
ex: ex 是在 ex 模式下启动 vim 文本编辑器,ex 的执行效果和 vi -E 雷同,如要从 Ex 模式回到普通模式,则在 vim 中输入: vi 或: visual 即可。 详细命令说明见 http://man.linuxde.net/ex
GCC 和 G++:编译步骤:(以 binary.c/binary.cpp 为例)
1. 预处理,生成 .i 文件; 命令:GCC —>gcc -E binary.c -o binary.i G++—>g++ -E binary.cpp > binary.i 预处理的具体做法:头文件的包含;注释的删除;#define 标识符的替换和删除;宏定义的替换,最后生成 test.i 文件。
-E:只进行预处理,产生预处理后的结果到标准输出
2. 编译,生成 .s 文件; 命令:GCC —>gcc -S binary.i -o binary.s G++—>g++ -S binary.cpp 编译阶段的具体做法:生成汇编代码;语义分析;语法分析;符合汇总,最后生成 test.s 文件。
-S:只进行预处理和编译,生成. s 文件
3. 汇编,生成 .o 文件; 命令:GCC —>gcc -c binary.s -o binary.o G++—>g++ -c binary.cpp 汇编阶段的具体做法:将汇编代码转化成二进制代码,最后生成 test.o 文件。
-c:只进行预处理、编译和汇编,生成. o 文件
4. 链接,生成可执行程序; 命令:GCC —>gcc binary.o -o binary(可以输出到指定的文件) G++—>g++ binary.o -o binary 链接阶段的具体做法:将. o 文件与所需的库文件链接整合形成可执行文件。
-o:指定目标名称,常与 - c、-S 同时使用,默认是. out
: 发现程序中的警告。
- gcc -Wall binary.c -o binary
GCC 和 G++ 的区别和联系: 1>.GCC 会将 .c 后缀文件当作 c 程序,G++ 将 .c 后缀文件当 c++ 程序;对于. cpp 后缀文件 GCC 和 G++ 都会将其当作 c++ 文件。 2>. 编译阶段:G++ 编译 c 程序时会调用 GCC;对于 c++ 代码,GCC 和 G++ 是等价的。 3>.c++ 代码链接阶段是 G++ 或 gcc -lstdc++ 完成的。
- vim binary.c gcc - g binary.c //生成a.out文件
- gdb a.out //接下来就可以使用命令对程序进行调试
常用命令:
l 行号:显示 a.out 文件,也就是二进制文件源代码,默认每次 10 行; l 函数名:显示指定函数的源代码; r:运行程序; quit:停止调试; n:单条执行; s:进入函数调用; b 行号:在指定行设置断点; break 函数名:在指定函数开头设置断点; info break:查看断点的信息; finish:执行到当前函数返回,然后停下来等待命令; p:打印表达式的值; p 变量:打印变量的值; set val:修改变量的值; c:从当前位置开始连续而非单步执行程序; delete breakpoints:删除所有断点,加上 n 是删除序号为 n 的断点; disable(enable) breakpoints:禁用 (启用) 断点; info breakpoints:查看当前设置了哪些断点; display 变量名:跟踪查看一个变量,每次停下来都显示变量的值; undisplay:取消对之前变量的跟踪; until 行号:调到指定行; breaktrace(bt):查看各级函数调用及参数; info locals:查看当前栈帧局部变量的值;
注:以上有的是从网上搜集的,有问题的话请联系,谢谢。
来源: http://blog.csdn.net/qq_39295755/article/details/78910920