Linux之gdb——发现、定位

在最初使用Windows编程的时候不同,使用Linux进行编程的过程中,如果遇到程序有什么问题我们很难像在VS以及keil中一样,直截了当的在程序对应语句最左侧打下一个断点,便可以进行对问题的进一步定位与分析。Linux中的调试工具——gdb,并不如VC、BCB等IDE的调试那般便捷,甚至对于像我这样的刚开始接触Linux编程的菜鸟来说可以称得上有些“困难”,因此gdb的使用也就成了一个可以拿出来讨论的话题。

以下,我将根据我目前所学所了解到的一些gdb的使用方法及要点做出简单总结,如有谬误,欢迎指正。


首先,什么是gdb:

        gdb全称为“GNU symbolic debugger”,是GNU开源组织发布的一个强大的Linux下的程序调试工具。而GUN开源组织同时还发布的另一个被我们熟知且常用的工具就是我们在使用gdb调试之前所必须初步掌握的编程语言编译器——gcc。


准备工作:

首先我们要知道gdb所打开的文件并不是我们简单的“.c”文件,而是调试信息(关于调试信息这里不做具体介绍,主要是我自己还在似懂非懂)。

所以,在将程序写好保存之后,我们需要先使用gcc的-g命令来编译源文件,生成可以被gdb使用的文件。具体命令使用格式如下:

gcc [文件名] -o [生成文件名] -g


 gdb的使用之——查看程序源代码

命令:l

——list

如果程序代码过长一次显示不完,再次使用 l 命令会接着输出程序的其它部分。


gdb的使用之——运行被调试程序

命令:r

——run

 


 gdb的使用之——打断点

命令:b [行号]

——break

  


 gdb的使用之——继续执行

命令:c

——continue

就如同我们在VS的调试中停到断点后再次点击一次运行一样,程序会继续运行下去直到下一个断点,或者,程序结束。


gdb的使用之——查看断点信息

info b

如果你和我一样是个初学者,在这里我们只需要注意两个点,其一,是断点的编号,及Num下的数字;其二,则是断点信息最后的那一句in main at test.c:9,即断点在mian函数当中,文件的第九行行。而编号与所在行数也是会在你设置断点时反馈给你的。如图片最后一行。


 gdb的使用之——删除断点

命令:d [断点编号]

——delete

命令:clear [断点所在行]


gdb的使用之——单步调试

命令:n

——next

 

 逐过程调试,即所在函数的每一句为一个过程,调试过程中不会进入句中所跳转的函数,而是将它们作为一个整体运行过去。

命令:s

——step

 逐语句调试,这个就不用过多解释了,它是可以进入到函数内部的。


gdb的使用之——打印指定变量的值

命令:p [指定变量]

——print

 

这是一个很强大的功能,当然,它的强大不仅仅局限在它可以输出某个时刻变量的值,它还可以将某个时刻变量的值改变,然后以改变后的值继续运行下去。


命令: q

——quit

退出调试

以上便是gdb使用时我们会经常用到的一些简单指令。

由于我个人的时间原因就先将本篇结束了吧,仅仅作为gdb的一个入门篇,后续应该还会有对个别命令更加深入的讲解以及gdb的其他拓展(这个可能会比较多,目前所了解到的涉及的知识点还是挺多的,按部就班的我还需要不短的时间才能学习到)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云雷屯176

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值