【gdb】GDB调试器的快速入门

本文详细介绍如何使用GDB进行C/C++程序的调试,包括设置断点、查看源码、单步执行、打印变量等核心操作,助您快速定位并解决程序错误。

允许调试

编译时添加参数

g++ -g source.cpp -o test

开始调试

在命令行输入gdb test

test是生成的可执行文件

查看源码

使用list命令,通常使用缩写 l

  • l

    默认每次显示10行

  • l 行号

    以行号为中心,展示上下10行代码

       

  • l 函数名

     将显示函数在的源码

     

断点

设置断点

  • break n

    在第N行设置断点。可以使用b n

  • b 函数名

    在函数入口处设置断点

    上图在71行设置了断点,在main函数入口处设置了断点

查看断点

  • info b

    查看断点的设置情况

    可以看到一共设置了两个断点

删除断点

  • delete 断点号n

    删除第n个断点

    删除一个断点后,只有一个断点

  • disable 断点号n

    暂停第n个断点

    看到第一个断点的enb状态改变

  • enable 断点号n

    开启第n个断点

    1号断点的状态重新变成了y

  • delete breakpoints

    删除所有断点

       

调试

  • run(r)

     运行程序,会在断点处停下

    

  • continue (c)

    继续执行,运行到下一个断点或者结束

  • next (n)

     单步运行。如果遇到函数调用,不进入函数,直接执行函数

    

  • step (s)

    单步调试如果有函数调用,那么将进入函数体执行

  • quti (q)

    退出gdb调试

打印

  • print(p) exp

    打印表达式exp

     

  • p a

    显式a 的值

  

  • display exp

   每次单步调试后,展示exp的值

       

   看到每次n后,都会展示i 的值

  • undisplay exp

    取消打印exp的值

运行信息

  • bt

    查看当前运行的堆栈列表

       从堆栈信息中,看到,目前执行func1函数。func1的栈帧编号是0,main函数的栈帧编号是0。同时也能看到传递进来的参数有值。

  • i locals

      查看局部变量

  • frame 栈帧编号

      切换栈帧

      

      此时可以查看main函数中的局部变量  

窗口

  • 显示源代码窗口

    layout src

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值