嵌入式文本编辑器&编译器&调试器

嵌入式文本编辑器

Linux最常用的文本编辑器是vi(或vim)visual lnterface的简称,文本编辑器是计算机系统中 最常用的一种工具。它可以执行文本的输出、删除、查找、替换等文本操作,vi只有命令,没有菜单,命令繁多。vi有三总基本工作模式。命令行模式、底行模式、插入模式。

命令模式:控制屏幕光标的移动,字符、字、或者行的删除,移动、复制。进入插入模式或者底行模式。

底行模式:文件保存或者退出vi,设置编辑环境。

插入模式:只在插入模式才能输入文字。ESC返回命令模式


vi的基本操作

进入vi后的是处于命令模式,按i进去插入模式,按ESC返回命令模式。


vi的复制、删除

x(小写):每按一次删除光标后面的一个字符。

#x(小写):6x表示删除光标后面的6个字符。

X(大写):每按一次,删除光标所在的前一个字符。

#X(大写):6X:表示删除光标所在的前6个字符

dd:删除光标所在行

#dd:从光标所在行开始删除#行


复制

yy:将光标所在行复制

#yy:6yy从光标所在的该行往下数的6行复制。


撤销

u:回到上一个操作


嵌入式编译器

Linux平台最流行的编译系统就是Gcc,GCC是GNU发布的软件,GCC可以编译C、C++、Java等多种语言。可以编译不同体系的结构的编译程序,如ARM,x86,效率比较其他编译系统高出20%-30%。

gcc命令的使用格式

gcc -c 对源文件进行编译或者汇编

gcc -E 对源文件进行预处理

gcc -S 对源文件进行编译

gcc -o file  输出目标文件 file

gcc -g 产生调试信息

gcc -W 屏蔽所有警告信息

gcc -Wall 显示所有警告信息

gcc -werror 出现任何警告信息就停止编译

编译过程分为4个阶段

1、预处理 pre=processing     gcc -E 对源文件进行预处理             在编译时候把头文件的内容加载进来

2、编译 Compiling                 gcc -S 对源文件进行编译                 不做其他处理              

3、汇编 Assembling              gcc -c 对源文件进行编译或者汇编     把汇编程序翻译成CPU可以执行的二进制文件(目标文件)

4、链接 Linking                      把程序中所有的目标文件和所需的库文件都链接在一起,生成一个可以直接运行的可执行文件。


嵌入式调试器GDB

使用GCC调试程序的时候只能依靠gcc发出的警告信息或者错误信息来运行,效率低。

代码如下:计算5的阶层程序

嵌入式文本编辑器&编译器&调试器

gcc -g test.c -o test 对test进行编译  ,其中g的作用是把调试信息加入生成的test可执行文件中,否则GDB无法对test进行调试。

使用命令 gdb test 启动gdb对test的调试

嵌入式文本编辑器&编译器&调试器

①查看源文件     list              在调试程序的时候,gcc会产生警告或者错误的代码行数,普通的文本环境无法直接获取语句行数

嵌入式文本编辑器&编译器&调试器

②设置断点         b                通过断点可以知道程序的每一步执行状况(当前变量的值、函数是否被调用等)

嵌入式文本编辑器&编译器&调试器

③查看断点        info  b         因为命令b可以设置多个断点,所以为了随时查看断点情况,在GDB中用info b 看所有断点情况

嵌入式文本编辑器&编译器&调试器

④运行程序        r (run)       GDB默认从代码的首行开始执行,也可r+行数 从指定行数开始运行,如果程序有断点,则程序会在断点前一行停止运行。

嵌入式文本编辑器&编译器&调试器

⑤查看变量值    p  n(printf 当前变量n的值) 程序暂停运行后就可以查看当前状态了,printf 当前变量n的值

嵌入式文本编辑器&编译器&调试器

⑥继续运行程序    c     continue    查看完当前程序后,就可以继续执行程序     

嵌入式文本编辑器&编译器&调试器嵌入式文本编辑器&编译器&调试器

⑦单步运行        s n                在程序比较复杂的时候往往需要程序一步一步的往下运行,每行设置断点比较麻烦,所以可以但不运行 ,(step  next)        s可以在程序发生函数调用的时候进入函数内部运行,而n不会进入函数内部运行。