GDB使用(需反复练习)

内容来自《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使用

posted on 2017-03-22 08:43  Liz-  阅读(159)  评论(0编辑  收藏  举报