嵌入式学习2022.1.17
一、调试器 gdb
1、功能:
①启动被调试程序 /g
②让被调试的程序在指定位置留住(设置断点)→run
③当程序被停住时,可以检查程序状态-变量值
gcc -g test.c -o test
gdb test
(gdb)默认查十行
(gdb)l——查看源代码
(gdb)break 内容——设置断点(break可简写为b)

(gdb)info break——查看断点信息

(gdb)r——运行到第一个断电→敲回车,重复之前的内容(继续运行)

(gdb)p i——print i
(gdb)print result

(gdb)c——继续(continue)

函数返回:①返回值(到return后面);②返回到主函数(流程返回)
(gdb) n——执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句)
(gdb)bt
在遇到段错误时,输入bt命令,即可跟踪错误,非常好用,方便记忆。可以叫变态。
具体使用如下图:
2、命令
| 命令(缩写) | 说明 |
| list(l) | 显示多行源代码(默认十行), |
| list(l)n:有行号,从该行开始显示 | |
| list(l)函数名:有函数名,从该处开始显示 | |
| break(b) | 设置断点,程序运行到断点的位置会停下来 |
| break(b)函数名:在某函数入口处添加断点 | |
| break(b)行号:在指定行添加断点 | |
| break(b)行号 if条件 当条件为真,指定行处断电生效 | |
| info(i) | 描述程序的状态 |
| info break | 查看所有设置的断点 |
| run(r) | 开始运行程序,到第一个断点 |
| display(disp) | 跟踪查看某个变量,每次停下来都显示它的值 |
| step(s) | 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句 |
| next(n) | 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句) |
| print(p) | 打印内部变量值 |
| print(p)变量名 查看指定变量值 | |
| continue(c) | 继续程序的运行,直到遇到下一个断点 |
| finish | 运行程序,直到当前函数结束 |
| set var name=v | 设置变量的值 |
| clear | 清除所有断点 |
| clear n:清除第n行的断点 | |
| start(st) | 开始执行程序,在main函数的第一条语句前面停下来 |
| enable | 使断点生效 |
| disable | 使断点失效 |
| file | 装入需要调试的程序 |
| kill(k) | 终止正在调试的程序 |
| watch | 监视变量值的变化 |
| backtrace(bt) | 查看函数调用信息(堆栈) |
| frame(f) | 查看栈帧 |
| quit(q) | 退出GDB环境 |

二、工程管理器
1、定义
管理较多文件Make工程管理器也就是个“自动编译管理器”,这里的自动是指她能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作。
makefile是make读入的默认唯一配置文件。
2、编写规则
(1)包含内容:
①需要由make工具创建的目标本(target),通常是目标文件或可执行文件;
②要创建的目标体所依赖的文件;
③创建每个目标体时需要运行的命令(command),这一行必须以制表符(tab键)开头。
(2)格式
target : dependency _files
<TAB>command




伪目标
定义没有依赖只有执行动作的目标称为“伪目标”
执行


make clean

makefile

Shell——命令行解释器
作用:遵循一定的语法将输入的命令加以解释并传给系统。他为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell本身是一个用C语言编写的程序,他是用户使用Linux的桥梁
Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,他互动的解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,包括循环和分支。他虽然不是Linux系统内核的一部分,但它调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行。
c语言中标识符命名规则
1、只能包含数字、字母以及下划线,不能包含其他特殊字符
2、只能以字母或下划线开头
3、不能以系统已有的关键字重名
4、区分大小写字母
5、长度限制
浙公网安备 33010602011771号