zoukankan      html  css  js  c++  java
  • 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 "--- "
    > 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

    参考:

    1,http://web.cecs.pdx.edu/~jrb/cs201/lectures/handouts/gdbcomm.txt

  • 相关阅读:
    00:Java简单了解
    QQ空间相册照片批量导出
    Git基本操作
    【有钱的大佬看过来】Java开发学习大纲
    默认端口号走一波
    获取“今日头条”西瓜视频
    CentOS 下源码安装LAMP环境
    书写是为了更好的思考
    U盘安装Ubuntu 14.04 LTS正式版 出现如下的提示,不能继续,如何操作?
    U盘安装Ubuntu 14.04 LTS正式版
  • 原文地址:https://www.cnblogs.com/cobbliu/p/7337428.html
Copyright © 2011-2022 走看看