• gdb x查看二进制


    参考

    http://blog.csdn.net/allenlinrui/article/details/5964046

    (gdb) disassemble main
    Dump of assembler code for function main:
    0x0000000000400463 <main+0>:  push   %rbp
    0x0000000000400464 <main+1>:  mov    %rsp,%rbp
    0x0000000000400467 <main+4>:  mov    $0x5,%r8d
    0x000000000040046d <main+10>: mov    $0x4,%ecx
    0x0000000000400472 <main+15>: mov    $0x3,%edx
    0x0000000000400477 <main+20>: mov    $0x2,%esi
    0x000000000040047c <main+25>: mov    $0x1,%edi
    0x0000000000400481 <main+30>: callq  0x400448 <callee>
    0x0000000000400486 <main+35>: mov    $0x2,%eax
    0x000000000040048b <main+40>: leaveq
    0x000000000040048c <main+41>: retq
    End of assembler dump.
    (gdb) x/10i main
    0x400463 <main>:  push   %rbp
    0x400464 <main+1>:    mov    %rsp,%rbp
    0x400467 <main+4>:    mov    $0x5,%r8d
    0x40046d <main+10>:   mov    $0x4,%ecx
    0x400472 <main+15>:   mov    $0x3,%edx
    0x400477 <main+20>:   mov    $0x2,%esi
    0x40047c <main+25>:   mov    $0x1,%edi
    0x400481 <main+30>:   callq  0x400448 <callee>
    0x400486 <main+35>:   mov    $0x2,%eax
    0x40048b <main+40>:   leaveq
    (gdb)

    x/<n/f/u> <addr>

    n、f、u是可选的参数。

    n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元的内容,一个内存单元的大小由后面的u定义。

    f 表示显示的格式,参见下面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。

    u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节。当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。

  • 相关阅读:
    linux service 例子
    YII2自动初始化脚本
    ubuntu 如何在命令行打开当前目录
    mysql 储存过程
    Mysql 随笔记录
    Lack of free swap space on Zabbix server
    意外发现PHP另一个显示转换类型 binary
    常用的排序代码
    线程的实现方式之内核支持线程和用户级线程
    寻找二叉树中的最低公共祖先结点----LCA(Lowest Common Ancestor )问题(递归)
  • 原文地址:https://www.cnblogs.com/charlesblc/p/6506750.html
Copyright © 2020-2023  润新知