gdb调试命令

本文详细介绍GDB调试器的使用方法,包括设置断点、运行程序、查看变量、跟踪调用栈等核心功能。同时,讲解了如何利用GDB进行高效程序调试,适用于初学者及有经验的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

gdb通常和gcc命令一起使用,编译选项加入-g才可使可执行文件处于debug模式。

而处于debug模式的可执行文件,gdb才能对每条指令找到它对应源代码的行号。

 

gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev]
    [-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir]
    [prog[core|procID]]

 

gdb [可执行文件]:选中可执行程序,进入gdb的debug模式;
    (gdb) b(breakpoint):用法:b 函数名 :对此函数进行中断 ;b 文件名:行号;
    (gdb) run:启动程序,运行至程序的断点或者结束;
    (gdb) l(list):用法:l funcname,制定函数的源码。或者l linenum,显示指定行周围的源码。或l -,显示当前行前面的源码。或l,显示当前行后面的源码;
    (gdb) s(step):进入函数,逐语句运行;
    (gdb) n(next):不进入函数,逐过程运行;
    (gdb) c(continue):继续运行,跳至下一个断点;
    (gdb) p(print):打印显示变量值;
    (gdb) set variable=value,为变量赋值;
    (gdb) kill:终止调试的程序;
    (gdb) h(help):列出gdb详细命令帮助列表;
    (gdb) clear filename.c:30:清除30行处的断点;
    (gdb) info break:显示断点信息;
    (gdb) delete 断点编号:断点编号是info break 后显示出来的;
    (gdb) bt(backtrace):回溯到段出错的位置;
    (gdb) frame 帧号:帧号是bt命令产生的堆栈针;
    (gdb) q:退出;

 

r重头运行,c继续运行。

 

b,打断点。

b 函数名,或者b *地址

 

 

以条件表达式设置断点

(gdb)break 7 if i==99

 

查看当前设置的断点信息

info breakpoints

 

delete可删除单个断点。

delete 5

也可删除一个断点的集合,这个集合用连续的断点号来描述。

delete 1-10

序号的获取,用上面的info breakpoints即可。

 

 

info registers,显示所有的寄存器,可简写为i r。

info registers eax,只显示%eax,可简写为i r eax。

 

 

查看变量

p 变量名

x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。

按二进制打印一个浮点数,定义方式为【double x】。

 

x 地址,或x &变量名,查看内存内容。

格式尾数,b表示单字节,h表示双字节,w表示四字节,g表示八字节。

gdb默认w,4字,32位。

当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。

 

同一个作者的两篇文。

https://cloud.tencent.com/developer/article/1177167

https://blog.youkuaiyun.com/liigo/article/details/582231

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值