gdb调试

1. gcc a.c b.c c.c -o app==>gcc a.c b.c c.c -o app -g

-g:会保留函数名和变量名

2. 启动gdb

  • gdb 可执行程序的名字
  1. gdb app
  2. 给程序传参:set args xxx xxx

3. 查看代码--l/list(默认打开main函数所在文件)

  • 当前文件:
    • l
    • l 行号
    • l 函数名
  • 非当前文件
    • l 文件名:行号
    • l 文件名:函数名
  • 设置显示的行数
    • set listsize n
    • show listsize

4. 断点操作:b/break

  • 设置断点:
    • b 行号
    • b 函数名
    • b 文件名:行号
    • b 文件名:函数名
  • 查看断点
    • i/info b
  • 删除断点
    • d num(断点编号)
    • 删除多个:d num1 num2;d num1-num6
  • 设置断点无效
    • dis num(编号)
  • 断点生效
    • ena num(编号)
  • 设置条件断点
    • b 行号 if 变量==var

4. 调试相关的命令

  • 让gdb跑起来
    • r(run):停在第一个断点的位置
    • start:运行一行,停止
  • 打印变量的值:
    • p 变量名
  • 打印变量的类型:
    • ptype 变量名
  • 变量的自动显示:
    • display 变量名
    • 取消:undisplay 编号
    • 查看display信息:i display
  • 向下单步调试:
    • n(next):不会进入函数体
    • s(step):会进入待函数体内部
    • finish:跳出函数体
  • 从循环体直接跳出:
    • until(不能有断点)
  • 直接设置变量等于某一个值
    • set var 变量名=value
  • 继续运行gdb,停在下一个断点的位置
    • c(continue)
  • 退出gdb:
    • q(quit)

你可能感兴趣的:(gdb调试)