[Linux笔记]gdb调试器常用指令

本文介绍了如何使用GCC/G++生成带调试信息的可执行文件,并详细讲解了GDB调试工具的使用方法,包括设置断点、运行程序、查看代码、检查变量及控制执行流程等关键操作。

gcc/g++形成的可执行程序默认是release版的。若要生成debug版,应使用-g选项。
如:gcc -o mytest test.c -g -std=c99

可以看到debug版包含了调试信息:
在这里插入图片描述

使用:gdb 文件名
在这里插入图片描述

补充:
以下所有的查看指令都不会影响调试运行的执行流。

显示代码:llist

gdb启动后输入l 行号,显示从指定行开始的一部分代码。
如果只输入l,会随机显示一定行数。
后续再输入l,或按回车,会显示后续几行的内容,直到显示了全部内容。
在这里插入图片描述

运行:rrun

不打断点直接使用r相当于在VS下直接按F5:
在这里插入图片描述

调试过程中再次r可以选择从头开始运行:
在这里插入图片描述

断点:bbreakpoint

打断点

方式1:b 行号b 源文件名:行号

在这里插入图片描述

方式2:b 源文件名:函数名

在这里插入图片描述
↑断点的行号是函数内容的起始位置,而不是函数名的所在行。

查看断点:info b

这里的Num是断点的编号,Enb是断点有效性,为n则该断点为空断点。
在这里插入图片描述

删除断点:d 断点编号

设置空断点:disable breakpoint 断点编号

重新启用空断点:enable breakpoint 断点编号

打断点后再r就会在断点处停下,此时再info b会显示断点被命中的次数
在这里插入图片描述

运行到下一个断点(相当于VS打断点后F5):ccontinue

在这里插入图片描述

逐过程(相当于VS的F10):nnext

逐函数执行,执行完后不会停在函数末尾,而是会来到下一行。
相比VS,gdb的逐过程执行需要程序已经开始测试运行,而不能没运行就直接n,所以会需要断点辅助。
在这里插入图片描述

逐语句(相当于VS的F11):sstep

从断点处往后执行一条语句,遇到函数则进入函数逐语句执行。

查看当前的函数调用链:bt

会从栈顶到栈底显示调用的函数。
在这里插入图片描述

查看当前变量值:p 变量名

在这里插入图片描述

常显示变量值:display 变量名

可显示内置类型,以及结构体等自定义类型。
每个常显示的变量都会有对应编号用于管理 。
在这里插入图片描述

取消常显示:undisplay 变量编号

在这里插入图片描述

不打断点运行到指定行数(用于跳过循环):until 行号

在这里插入图片描述

执行完当前函数:finish

进到函数内以后,不依靠断点而将当前函数执行完毕后停下并显示函数的返回值。
在这里插入图片描述

调试过程中将变量设为特定值:set var 变量名=目标值

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值