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

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

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

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

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

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

<addr>表示一个内存地址。

注意:严格区分n 和u的关系,n表示单元个数,u表示每个单元的大小。

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

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

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

(gdb) help x
Examine memory: x/FMT ADDRESS.
ADDRESS is an expression for the memory address to examine.
FMT is a repeat count followed by a format letter and a size letter.
Format letters are o(octal), x(hex), d(decimal), u(unsigned decimal),
t(binary), f(float), a(address), i(instruction), c(char) and s(string).
Size letters are b(byte), h(halfword), w(word), g(giant, 8 bytes).
The specified number of objects of the specified size are printed
according to the format.

Defaults for format and size letters are those previously used.
Default count is 1. Default address is following last thing printed
with this command or "print".
(gdb) p f1
$4 = 8.25
(gdb) p f2
$5 = 125.5
(gdb) x/x &f1
0xbffff380:    0x41040000
(gdb) x/xw &f1
0xbffff380:    0x41040000
(gdb) x/xw &f2
0xbffff384:    0x42fb0000
(gdb) x/2xw &f1
0xbffff380:    0x41040000    0x42fb0000
(gdb) x/4xw &f1
0xbffff380:    0x41040000    0x42fb0000    0xbffff408    0x00bcba66
(gdb) x/tw &f1
0xbffff380:    01000001000001000000000000000000
(gdb) x/2tw &f1
0xbffff380:    01000001000001000000000000000000    01000010111110110000000000000000
(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

gdb debug memory address相关推荐

  1. runtime error: invalid memory address or nil pointer dereference

    runtime error: invalid memory address or nil pointer dereference 解决方法: tcallback((unsigned char*)pac ...

  2. v2ray服务端启动出现panic: runtime error: invalid memory address or nil pointer dereference

    panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentatio ...

  3. 解决docer login报错 panic: runtime error: invalid memory address or nil pointer dereference

    问题描述 不知道自己做了什么操作,然后进行docker login的时候,突然出现以下错误 panic: runtime error: invalid memory address or nil po ...

  4. PostgreSQL源码系列二:Postgres-XL调试基础GDB Debug范例

    一. 前言 接上一篇,上篇的pg_hba的配置还是有点问题的,本篇将通过Debug来解析问题根源. 二. 问题 由于postgres是超级管理账户,实际使用中不可能开放给普通用户,我们模拟下生产环境, ...

  5. go 结构体赋值 invalid memory address or nil pointer dereference

    go 指针结构体赋值 1.前言 2.举例 3.分析 4.解决 1.前言 日常生产中,当我们使用go指针结构体赋值时,会报出invalid memory address or nil pointer d ...

  6. panic: runtime error: invalid memory address or nil pointer dereference

    只可以给索引1和3赋值,因为只有它们分配了内存,才可以赋值,如果我们给索引0赋值,运行的时候,会提示无效内存或者是一个nil指针引用. 解决办法 :我们要先给索引0分配内存,然后再进行赋值修改.

  7. [Advance] How to debug a program (上)

    Tool GDB Examining Memory (data or in machine instructions) You can use the command x (for "exa ...

  8. GDB Watchpoints

    目录 Watchpoints Watchpoints and Threads x86 Watchpoints https://github.com/Rtoax/test/blob/master/c/g ...

  9. Linux debug 常用命令

    CentOS/Redhat/Fedora 系統命令: 1. 安装软件源 # 导入public key rpm --import https://www.elrepo.org/RPM-GPG-KEY-e ...

最新文章

  1. 赵劲松:预知潜在风险,做化工安全科技创新的引领者
  2. java ssh 常用术语
  3. docker build run 卡住_还在使用第三方Docker插件?SpringBoot官方插件真香!
  4. pythonweb静态服务器_python实现外部静态服务器,浏览器通过HTTP与之通信2
  5. 为什么volatile能保证有序性不能保证原子性
  6. php框架laravel下载,Laravel框架下载,安装及路由操作图文详解
  7. 基于 HttpClient 4.5 的 HttpClientUtils
  8. TFT-LCD与FSMC控制器
  9. vs2019运行提示脚本错误
  10. 用Python实现TXT文件分割
  11. Win10系统电脑声卡驱动正常但没声音?驱动人生解决方案
  12. Accelerated Proximal Gradient Method/FISTA
  13. Unity 3D模型动画导出为帧序列
  14. MAC压缩文件 密码 加密ZIP
  15. 人人公司启动史上最大规模校园招聘
  16. 关于NIST随机数测试软件报错问题的补充
  17. 【log4j2】下载、安装、使用
  18. 计算机科学在本质,人类大脑的本质竟然是计算机?
  19. 【Python实训项目】pygame制作【飞机大战】
  20. 百度快照优化就是友情链接

热门文章

  1. python中类的用法_Python中的类和方法使用举例
  2. java中是什么意思_java中是什么意思?
  3. css中的代码图标,认识CSS中字体图标(示例代码)
  4. python作者龟叔_龟叔和他的Python
  5. C++知识点1——基础
  6. 以太网未启用DHCP解决方法
  7. UpdateData使用简介
  8. 虚拟服务器目录,服务器虚拟主机目录
  9. java实现人字拼,地板怎么玩花式人字拼铺法 人字拼地板家居实例图
  10. Adaptive Execution让Spark SQL更高效更好用