内容来自《linux_c编程一站式学习》第10章内容。细节忘了的话查书
文件temp.c

普通编译命令: gcc temp.c -o temp
调试:单步执行和跟踪函数调用
- 编译命令:gcc -g temp.c -o temp
-
- -g 在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件中,所以在调试时必须保证gdb能找到源文件。
- 进入调试:gdb temp
-
- 进入后查看命令:help
- 具体查看某个命令:help files
- list 列源码: list 1 从第一行列出 list main 列出某个函数。简写为l
- quit 退出
- 开始调试
-
- start 执行程序
- next 简写 n :控制语言一条一条地执行,之后直接回车仍是单步执行?
- step 简写 s:进入某个函数
- backtrace 简写 bt: 查看调用栈帧
-
- #0 #1是指栈帧编号
- info 简写 i:查看局部变量值 如: i locals
-
- 如果想查看main函数的当前局部变量,可以使用frame(简写f)命令选择1号栈帧,然后再查看局部变量(i locals)
- 用n或者s继续向下运行,p sum 打印变量sum的值
- finish 从当前函数返回
- 在调试中修改变量值: set var sum=0 还可以使用print 如 print result[2]=33
- 总结1:基本命令
-
断点
- 测试程序:
- display sum 跟踪显示sum
- undisplay 可以取消跟踪显示 sum 编号为1,则undisplay 1
- 设置断点break , 简写b 如在第9行设置断点 b 9 , 参数也可以是一个函数
- continue 命令 简写 c:连续执行
- i breakpoints 可以查看已设置的断点
- delete breakpoints $端点编号 可以额删除某个断点
- disable breakpoints $编号 禁用断点/ enable $编号 启用断点
- 删除所有断点: delete breakpoints
- 给断点设置触发条件,run 简写 r ,重新从程序开头连续运行
观察
watch 了某个变量后,一旦该变量产生编号,程序就会断住,可以结合breakpoint使用