GDB常用命令:查看进程、查看寄存器、断点相关

1、查看进程三种方式

ps -A;ps -auxps -C processName

2、处理进程相关

./gdb attach processID不带参数
gdb --args ./abd arg1 arg2带参数
kill -9 processID关闭进程

3、忽略一些信号量,让程序继续运行:

handle SIG32 noprint nostop对应GDB中经常出现的信号量,可以相同处理

4、查看函数/全局变量地址
i func classA::abc
i addr namespace1::g_val1

5、断点相关

b *函数地址C++函数打断点:如:b *0xb20efd1c
b func1c语言写的函数可以直接打断点到接口 因为函数名不重复
d 5删除第五个断点
disable/enable不使能/使能断点,但不删除
i b查看所有断点信息
d删除所有断点

6、运行相关

c打完断点需要继续执行0下去
n运行一行
n 5执行5行,不进入函数
step 5执行5行,进入函数

7、查看寄存器值相关
断点断到函数后,查看寄存器地址 info registers(arm寄存器函数中前三个参数在r1,r2,r3,后面的参数在sp栈里,返回值地址是lr,函数返回值存在r0里)

i r显示全部寄存器内容
xexamine命令(简写是x)来查看内存地址中的值
x /3xh 0x54320表示从内存地址0x54320读取内容,h表示以双字节为一个单位,3表示三个单位,x表示按十六进制显示。
p *0x98529ad4打印信息
i var 变量名查看变量的值
p $r1 = 0x1;更改函数参数的值:将第一个参数改为1
set {unsigned int}0xa823d2 = 0x1按地址写值
info locals/info args打印出当前函数的参数名及其值

8、函数相关

bt查看调用栈
return (int)0强制函数返回
finish执行完改函数返回
call (int)0x1238217(int)强行调用某函数:返回值int,0x1238217为函数指针,参数为int

9、查看上下文

l显示当前代码前后5行内容
l abc.cpp:20显示abc.cpp文件第20行的前后5行内容

参考资料:很经典的GDB调试命令,包括查看变量,查看内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值