gdb 拾穗

1,跳过某个特定信号

(gdb) handle SIGPIPE nostop noprint pass

2,break在特定的系统调用处

(gdb) catch syscall 3

3,遇到一个断点的时候执行一组commands

(gdb) commands 1   #在断点1出现的时候执行下面一组命令

> where

> continue

> end

(gdb)

4,遍历某个数据结构

set $i=0

while $i<6

 set $p=XX->list

 set $q=$p->next

 set $n=0

 while $p!=$q

  set $n=$n+1

  set $q=$q->next

  end

 p $n

 set $i = $i + 1

 end

 例2

gdb> set $x=1

gdb > set $addr=0x111120

gdb > while $x < 168

> x/32ag $addr

> set $x = $x + 1

> set $addr = *($addr)

> echo "---\n"

> end

gdb > 

5,watch一块内存:watch *0xb424200

6,disassemble/disass 查看当前指令处的汇编代码

7,demangle 查看某变量的C++原始类名:

(gdb) demangle _ZTVN6apsara5pangu19NormalFileChunkInfoE

vtable for apsara::pangu::NormalFileChunkInfo

8,

查看宏的值:

(gdb) info macro MACRO_NAME

展开宏:

(gdb) macro expand MACRO_NAME

9,

打印所有的线程栈:thread apply all bt

查看当前栈桢的信息:Info frame

查看所有集群器信息:info registers

rsp  栈指针,指向栈顶

rbp 栈桢开始处

Rip 指令寄存器

rax  返回值

调用者的寄存器: %rbx, %rbp, %r12, %r13, %r14, %r15

被调用者的寄存器: %rdi, %rsi, %rdx, %rcx, %r8, %r9

10, 查看某个类型内的变量

gdb) ptype <class_name>

11, 查看某个类型内的成员变量的offset

gdb) p &((IORequest *)0)->pending_

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值