[Linux系统编程]gdb调试

      UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。-百度百科

gdb的功能

  1. 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
  2. 可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
  3. 当程序被停住时,可以检查此时你的程序中所发生的事。
  4. 你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。

调试基本指令

总结了常见的(用过的)指令。

  • -g:使用该参数编译可以执行文件,得到调试表。例: gcc hello.c -o main -gll查看 main 变大了 )

  • gdb ./main 进入调试界面在这里插入图片描述

  • list/llist 1 列出源码。根据源码指定 行号设置断点。(一直 list 可以显示全部的代码信息)

  • bb 20 在 20 行位置设置断点。

  • run/r: 运行程序(和b配合使用 就是转单断点处)

  • n/next: 下一条指令(会越过函数)

  • s/step: 下一条指令(会进入函数)

  • p/printp i 查看变量的值。

  • continue:继续执行断点后续指令。(可以理解成跳到下一个断点)

  • finish:结束当前函数调用

  • quit:退出gdb调试

  • run:使用run查找段错误出现位置(会在段错误位置停下来)

  • set args: 设置 main 函数命令行参数 (在 start、run 之前)例: set args 11 22 33

  • run 字串 1 字串 2 …: 设置 main 函数命令行参数(方式二)

  • info b: 查看断点信息表
    在这里插入图片描述

  • b 20 if i = 5: 设置条件断点 (这个主要用在 循环, 我们要在第几次循环停下来)

  • ptype:查看变量类型。

  • bt:列出当前程序正存活着的栈帧(就是关于作用域的问题 ,不懂栈帧自寻查找)

  • frame: 根据栈帧编号,切换栈帧。(主要是你要查看另外一个栈中变量的地址,那就只能切换栈帧过去看)

  • display:设置跟踪变量(很方便 如果你每次要打印) 例:display i 每次n就能显示i的值

  • undisplay:取消设置跟踪变量。 使用跟踪变量的编号

常见错误

  • 使用单步进入系统的调用函数,我们要使用until+行号跳到要执行的行号处

  • gcc 编译没有 加-g的参数

总结

上述的指令都有测试使用过,如有错误,欢迎指出。

在这里插入图片描述

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值