Linux gdb

gdb(GNU Debugger)是一款命令行调试工具,主要用于定位和修复程序中的错误。

它支持设置断点、单步执行代码、查看变量值、检查内存状态等功能,能帮助开发者追踪程序执行流程,找到崩溃、逻辑错误等问题,广泛适用于 C、C++ 等语言的程序调试。 

1.进入 gdb

我们创建写好的c语言文件或者c++文件 要通过gcc\g++ 变成可以执行程序

才能呗gdb调试

gdb是debug模式

但是gcc和g++编译器默认生成的可执行文件是release文件

因此我们在使用gcc 生成可执行文件要加上 -g

这样我们的.out文件才可以被调试

gdb 可执行文件名   --进入gdb

2.l(list)

这个地l和list可以混用是等价的

listl 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
listl 函数名:列出某个函数的源代码。

3.b(break)

break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点

4.i b(info breakpoint)

info break和info breakpoint是完全等价的

info break :查看断点信息

5.d breakpoint(delete breakpoints)

这个地方breakpoint不可以缩写成b

因为这个地方b除了breakpoint 还有可能是bookpoints 

容易产生歧义

delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点

6.dis b(disable breakpoints)

和delet breakpoint一样 如果后面不加列 就是代表禁用所有断点

disable breakpoints:禁用断点

7.en b(enable breakpoints)

enable breakpoints:启用断点
和delet breakpoint一样 如果后面不加列 就是代表禁用所有断点

8.r(run)

run(r):从开始连续而非单步执行程序
run会在第一个断点停下来

9.!clear

!clearh和Linux中的clear功能相同

10.n(next)

n next:单条执行
等同于vis中的F10

11.s(step)

sstep:进入函数调用

等同于vis中的F11

不是函数的时候和n(next)没什么区别

12.finish

finish:执行到当前函数返回,然后挺下来等待命令
对代码做一些小的改动

13.until 

until X行号:跳至X

14.display

display 变量名:跟踪查看一个变量,每次停下来都显示它的值

15.undisplay

undisplay:取消对先前设置的那些变量的跟踪

16.set var

set var:修改变量的值

17.q(quit)

quit:退出gdb

18.p(print)

print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
(1)打印变量或者表达式的值
p x --打印变量的值
p a + b --打印表达式的值

(2)通过表达式修改变量值

p x = 20

(3)调用函数

p add(2, 3)

19.c(continue)

continue(c):从当前位置开始连续而非单步执行程序
程序已处于暂停状态(如命中断点、被信号暂停)时,从当前暂停的位置继续执行,直到遇到下一个断点或程序结束。

20.bt(breaktrace)

breaktrace(bt):查看各级函数调用及参数

#0、#1…:栈帧编号(#0 是当前最内层函数,编号越大越接近程序入口)。

add(a=2,b=3):函数名 + 参数值(显示当前层函数及传入的参数)。

at example.c:6:代码位置(函数所在的文件名和行号)。

21.ifo locals

infoi) locals:查看当前栈帧局部变量的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值