分类: 嵌入式
2011-10-03 14:01:24
Gcc常用参数:
-e
只进行预处理
-S
只编译,生成汇编代码
-c
只编译不链接,生成目标文件.o
-static
链接静态库
-g
包含调试信息,可以使用gdb调试
-g选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调试时必须保证gdb能找到源文件
Gdb调试:
List(l)
从第一行列出源代码,一次10行,回车继续列出
List 函数名
列出该函数的源代码
List 行号
列出从行号开始的代码
Quit
退出gdb
Start
开始执行程序,停在main函数的第一条语句处;gdb列出的这条代码是即将执行的下一条语句
Next(n)
一条一条的执行代码
Step(s)
跳进函数去跟踪代码
Backtrace(bt)
查看函数调用的栈帧
Info(i) locals
查看函数局部变量值
查看main函数的局部变量值:
Frame(f) 1 //选择1号栈帧查看,使用bt可以查看出main函数所使用的栈帧号
Info locals
Print(p) 变量名
打印出变量的值
Finish
运行到当前函数返回为止
改变变量的值
Set var 变量名=值
或者
Print(p) 变量名=值
Display 变量名
每次停下来都显示该变量的值
Undisplay 变量名
取消跟踪显示
Break(b) 行号
在该行处设置断点
Break 函数名
在某个函数开头设置断点
Continue(c)
程序到达断点处停下来
Info(i) breakpoints
查看已经设置的断点
Delete breakpoints 断点编号
删除指定编号的断点
设置断点在满足某个条件时才激活
Break 行号 if 表达式
Break 9 if sum != 0
Run(r)
重新从函数开头连续运行
Watch 数组元素
设置观察点,例如watch shuzu[5]
Info(i) watchpoints
查看当前设置的观察点
X
x/7b shuzu 查看数组名为shuzu开头的7个字节单元的内容