gdb pid 线程_gdb常用命令及gdb调试多进程/线程程序&coredump

(6)print(p)命令

这个命令比较常用,用来查看我们想看的内容。比如有关数组可以看全部,也可以看从左到右某一部分:

aca89fd7d02930b677023492859403bc.png

print命令针对变量查看的输出格式有:

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

d 按十进制格式显示变量

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

o 按八进制格式显示变量

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

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

c 按字符格式显示变量

f 按浮点数格式显示变量

(7)watch命令

这个命令比较有用。watch一般用来观察某个表达式(变量也是一种表达式)的值是否有变化,如果有变化,马上停住程序。我们有一下几种方法设置观察点:

watch   expr                 为表达式expr设置一个观察点,一旦表达式值有变化,马上停住程序

rwatch  expr                  当表达式expr被读时,停住程序

awatch expr                  当表达式的值被读或被写时,停住程序。

info      watchpoints       列出所有观察点(info指令通常可以去套 举例如下,演示观测*i的值,一旦变化停下来:

7b5eb5ffefacf61eb3d0d0bc9920535f.png

在循环中我们也可以使用watch,配合ignore,它是除了until命令之外又一个可以让我们跳出循环的方法,不过watch+ignore更强大,可以任意跳转到第i次循环。它们的意思就是观察一个变量,可以理解为断点,ignore这个断点多少次,然后用continue就可以直接跳过了。

d4e8100f379148f19049c00fd3326691.png

(8)examine命令

使用该命令来查看内存地址中的值。语法是:x/u addr

addr表示一个内存地址。“x/”后的n、f、u都是可选的参数,n

是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容;f

表示显示的格式,如果地址所指的是字符串,那么格式可以是s,如果地址是指令地址,那么格式可以是i;u

表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4字节。u参数可以被一些字符代替:b表示单字节,h表示双字节,w表示四字节,g表示八字节。当我们指定了字节长度后,GDB会从指定的内存地址开始,读写指定字节,并把其当作一个值取出来。n、f、u这3个参数可以一起使用,例如命令“x/3uh

0x54320”表示从内存地址0x54320开始以双字节为1个单位(h)、16进制方式(u)显示3个单位(3)的内存。

ef3fceadb33d5e792361cdea998dc2c4.png

(9)jump命令

jump命令不会改变程序栈的内容,一般只在同一函数内跳转。

jump linespec     指定下一条语句的运行点,linespec可以是linenum,filename+linenum,+offset这几种形式

jump address      跳到代码行的地址

(10)signal命令

使用signal 信号名(如SIGINT)这种方式把信号发送给程序,如果程序注册了signal_handler函数,还可以进行相应的处理,帮助调试程序。

(11)set命令

set args       设置命令行参数

set env environmentVarname=value 设置环境变量。如:set env USER=benben

(12)call命令

call function     强制调用某函数

强制调用某函数,它会显示函数返回值(如果函数返回值不是void)。print命令也可以完成该功能。

(13)disassemble命令

反汇编命令,查看执行时源代码的机器码。

59708abbe1f9b55a0ab55a0d29ddbe1f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值