嵌入式Linux开发工具—vim、gcc、gdb、makefile
vim(文本编辑器):学会如何配置vim
gcc(编译器):学会制作动态库和静态库及使用与区别
gdb(调试器):设置断点,单步执行,调试内存错误
make(工程管理器):编写makefile文件
————————————————————————————————————————————————————————————————————————————————————
vim简单介绍:
Linux文本编辑器:vim—功能最强大的文本编辑器—摆脱鼠标;
1.vi—vim—gvim:命令行模式、插入模式、底行模式(:)
(1)在命令行模式下:yy–粘贴、p–粘 贴、、dd删除、u–恢复;
(2)切换成插入模式:键盘输入a或i;
(3)vim+文件名 创建文件、Esc退出输入、shift+:进入底行,输入wq保存并退出。
2.如何配置vim
打开终端,输入vim /etc/vim/vimrc 进入配置文件进行修改
————————————————————————————
gcc简单介绍
嵌入式Linux开发工具gcc
1.gcc特点(GUN工具,一款交叉编译器)
交叉编译:在当前CPU平台下编译出在其他CPU平台下的可执行代码。
2.从源文件到可执行文件需要经历几步
预处理、编译、汇编、链接
预处理:头文件展开、宏替换、条件编译.i
gcc -E hello.c -o hello.i /gcc -E hello.c
编译:将预处理文件编译成汇编文件.s
gcc -S hello.i -o hello.s
汇编:将汇编文件编译成目标文件.o
gcc -c hello.s -o hello.o
链接:建立符号表–可执行文件a.out
gcc hello.o -o hello
执行:./hello
<>搜索路径:系统的目录文件(/usr/include)
" "搜索路径:先在当前目录,找不到再到系统的头文件目录查
3.-E 在预处理阶段停下来
-i 指定头文件的第三方搜搜路径
-D 在外部定义一个宏
-o 重命名可执行文件
-w 关掉警告:gcc hello.c -w -
hello
-o1/-o2/-o3优化警告:gcc -o1 hello.c -o hello
————————————————————————————————————————————————————————————
gdb断点设置
启动GDB后,首先就是要设置断点,程序中断后才能调试。在gdb中,断点通常有三种形式:
断点(BreakPoint):
在代码的指定位置中断,这个是我们用得最多的一种。设置断点的命令是break,它通常有如下方式:
break 在进入指定函数时停住
break 在指定行号停住。
break +/-offset 在当前行号的前面或后面的offset行停住。offiset为自然数。
break filename:linenum 在源文件filename的linenum行处停住。
break … if …可以是上述的参数,condition表示条件,在条件成立时停住。比如在循环境体中,可以设置break if i=100,表示当i为100时停住程序。
可以通过info breakpoints [n]命令查看当前断点信息。此外,还有如下几个配套的常用命令:
delete 删除所有断点
delete breakpoint [n] 删除某个断点
disable breakpoint [n] 禁用某个断点
enable breakpoint [n] 使能某个断点
观察点(WatchPoint):
在变量读、写或变化时中断,这类方式常用来定位bug。
watch 变量发生变化时中断
rwatch 变量被读时中断
awatch 变量值被读或被写时中断
可以通过info watchpoints [n]命令查看当前观察点信息
捕捉点(CatchPoint):
捕捉点用来补捉程序运行时的一些事件。如:载入共享库(动态链接库)、C++的异常等。通常也是用来定位bug。
捕捉点的命令格式是:catch ,event可以是下面的内容
throw C++抛出的异常时中断
catch C++捕捉到的异常时中断
exec 调用系统调用exec时(只在某些操作系统下有用)
fork 调用系统调用fork时(只在某些操作系统下有用)
vfork 调用系统调用vfork时(只在某些操作系统下有用)
load 或 load 载入共享库时(只在某些操作系统下有用)
unload 或 unload 卸载共享库时(只在某些操作系统下有用)
另外,还有一个tcatch ,功能类似,不过他只设置一次捕捉点,当程序停住以后,应点被自动删除。
捕捉点信息的查看方式和代码断点的命令是一样的,这里就不多介绍了。
————————————————————————————————————————————————————————————