C语言基础(十四)gdb调试

gdb调试工具


程序员在写程序的时候不可能是一帆风顺,一蹴而就的。gcc编译器可以发现程序代码的语法错误,但不能发现程序的业务逻辑错误,调试程序是软件开发的内容之一。调试程序的方法有很多种,例如可以用printf语句跟踪打印程序的运行步骤和变量的值,但是太过麻烦。此文章介绍一个Linux系统中强大的调试工具---gdb。

GDB(GNU Debugger)是GCC的调试工具。其功能强大, 现描述如下:

GDB主要帮忙你完成下面四个方面的功能:

  • 启动程序, 可以按照你的自定义的要求随心所欲的运行程序。
  • 可让被调试的程序在你所指定的断点处停住。(断点可以是条件表达式)
  • 当程序被停住时, 可以检查此时你的程序中所发生的事。
  • 动态的改变你程序的执行环境

gdb的安装

在Linux终端中输入:gdb  -v命令,就可以显示gdb的当前版本,表明当前的计算机已经安装gdb。如果现实command not found,则表明该计算机还没有安装gdb调试工具。这时候我们需要切换到root用户,使用命令yum -y install gdb即可安装gdb。前提是该系统可以连接互联网。

 

调试前的准备

用gcc编译源程序的时候,编译后的可执行文件不会包含程序源代码,如果你打算源程序可以被调试,编译的时候需要加-g参数,例如:

gcc -g  hello.c -o hello

然后再终端中输入gdb hello就可以调试hello程序。

启动gdb

  • 启动gdb:gdb program

program 也就是你的执行文件, 一般在当前目录下。

  • 设置运行参数
    1. set args 可指定运行时参数。(set srgs  main.c)
    2. show args 命令可以查看设置好的运行参数。
  • 程序调试
    1. run(r):程序开始执行, 如果有断点, 停在第一个断点处
    2. next(n):开始执行当前语句,如果该语句为函数调用,不会进入函数内部
    3. step(s):开始执行当前语句,如果该语句为函数调用,则进入函数内部第一条语句。如果函数是库函数或者第三方函数,用s也没用,因为没有源代码,如果是自定义函数,只要有源代码就可以进函数内部。
    4. continue(c):程序继续运行直到下一个断点处停下来
    5. start:程序向下执行一行(在第一条语句处停止)
    6. quit(q):退出gdb调式
  • 显示源代码
    1. list linenum打印第linenum行的上下文内容.
    2. list function:显示函数名为function的函数的源程序。
    3. list: 显示当前行后面的源程序。
    4. list -:显示当前文件开始处的源程序。
    5. list file:linenum: 显示file文件下第n行
    6. list file:function: 显示file文件的函数名为function的函数的源程序
  • 断点设置与取消
    1. break(b):设置断点,可以设置多个断点(b  20)
    2. info break(i b):查询所有断点
    3. delete(d):删除断点,delete后面可以跟多个值
    4. disable(dis):设置断点无效
    5. enable(ena):设置断点有效,与disable相反
  • 查看变量
    1. print(p):显示变量的值(p variable)
    2. ptype:显示变量类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黑暗守护者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值