zoukankan      html  css  js  c++  java
  • GDB查看内存命令(x命令)

    可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示:

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

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

    n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
    f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
    u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字 节,g表示八字节。当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。

    <addr>表示一个内存地址。
    n/f/u三个参数可以一起使用。例如:

    命令:x/3uh 0x54320 表示,从内存地址0x54320读取内容,h表示以双字节为一个单位,3表示输出三个单位,u表示按十六进制显示。

    输出格式
    一般来说,GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。例如,你想输出一个整数的十六进制,或是二进制来查看这个整型变量的中的位的情况。要做到这样,你可以使用GDB的数据显示格式:

    x 按十六进制格式显示变量。
    d 按十进制格式显示变量。
    u 按十六进制格式显示无符号整型。
    o 按八进制格式显示变量。
    t 按二进制格式显示变量。
    a 按十六进制格式显示变量。
    c 按字符格式显示变量。
    f 按浮点数格式显示变量。

    (gdb) p record
    $10 = {12, 76, 48, 62, 94, 17, 32, 37, 52, 69}
    (gdb) p &record
    $11 = (int (*)[10]) 0x8049740
    (gdb) x/4uw 0x8049740
    0x8049740 <record>:    12    76    48    62
    (gdb) x/6ow 0x8049740
    0x8049740 <record>:    014    0114    060    076
    0x8049750 <record+16>:    0136    021

    copy from:
    http://mooncome.blog.hexun.com/13684978_d.html
  • 相关阅读:
    CSS性能让JavaScript变慢?
    Cordova优缺点与环境部署
    nodeapi
    git常用命令
    常见状态码
    关于拉萨
    英语学习
    SQL 按表中的一个int值拆分成对应的个数的记录条数
    SQL分组编号
    C#四舍五入
  • 原文地址:https://www.cnblogs.com/super119/p/2254382.html
Copyright © 2011-2022 走看看