GDB常用命令整理

可参考这个更详细的:https://bbs.pediy.com/thread-272300.htm

本篇介绍gdb调试的一些基础指令。

 注意:进行gdb调试时,在编译时一定要加上-g 参数,否则无法正常gdb调试。

 

命令 全称 作用 实例和说明
file <文件名> file 加载被调试的可执行文件 (gdb) file filename
gdb -tui <文件名> - 以图形界面显示gdb调试,可以看源代码  
r run 运行被调试的程序,如果当前没有断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处 (gdb) r
 
x /nfb <addr>
examine

查看内存

n:表示要显示内存的长度

f:表示显示方式

b:表示一个地址单元的长度

<addr>: 要查看的地址

 

显示方式:

x 按十六进制格式显示变量。

d 按十进制格式显示变量。

u 按十进制格式显示无符号整型。

o 按八进制格式显示变量。

t 按二进制格式显示变量。

a 按十六进制格式显示变量。

i 指令地址格式

c 按字符格式显示变量。

f 按浮点数格式显示变量。

 

地址单元的长度:

b表示单字节,

h表示双字节,

w表示四字节,

g表示八字节

 

(gdb) x /10xw 0x12345678

作用:查看0x12345678的内存,总共10个单位内存,以十六进制查看,每个单位为4个字节

c continue 继续执行被调试程序,直到下一个断点或程序结束 (gdb) c
l list 查看源代码 l 15: 显示第15行附近的10行代码
l main: 显示main函数附近的10行代码
如果不带参数,将继续显示上次代码后的10行
b break 设置断点 b 24或cl 24: 在24行设置/取消断点
cl clear 取消断点 b main或 cl main: 在main()函数设置取消断点
b <行号> break 在某一行设置断点  
b <函数名称> break 在某个函数设置断点  
b <代码地址> break 在某一内存地址处设置断点  
d [编号] delete 删除指定编号的断点  
k kill 杀死正在调试的程序 停止调试
disp display 跟踪查看某个变量的值 disp x: 每次程序暂停,输出x的值
u until 让程序运行到指定位置 u 9: 运行到第九行,然后暂停
u search: 运行到search的入口,然后暂停
s step 单步调试。执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句 (gdb) s
n next 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句) (gdb) n
finish finish 跳出当前进入的函数 (gdb) finish
p print 打印变量的值 (gdb) p
i b info breakpoints 查看所有的断点 (gdb) i b
bt backtrace 查看函数调用信息(堆栈) (gdb) bt
q quit 退出调试 (gdb) q
wa watch 使用观察点可以使得当某表达式的值发生变化时,程序暂停执行 (gdb) watch 变量
aw awatch 变量被读写时都会停下来 aw i: 当i被读写的时候都会停下来
rw rwatch 变量被读的时候停下来 rw i: 当i被读的时候停下来
ig ignore 让断点在前n次到达时都不停下来 ig 3 12: 让编号为3的断点在前12次到达时都不停下来
cond condition 给断点加一个条件。 cond 2 i > 3: 2号断点只有在i>3时才起作用
comm commands 在某个断点处停下来后执行一段gdb命令 在断点4停下来后执行一段命令。输入这条命令后,就输入要执行的内容
set logging on - 输出调试信息到gdb.txt (gdb) set logging on
set print elements 999 - 修改打印字符串长度命令 (gdb) set print elements 999
shell + command - 在gdb中执行shell命令

(gdb) shell ls

       
       
       
posted @   逆行旅者  阅读(565)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示