gdb打印信息2——打印内存的值以及使用$_

测试代码

#include <stdio.h>

int main (int argc, char *argv[]) {

	int i = 0;
	char a[100];

	for (i = 0; i < sizeof(a); ++i) {
		a[i] = i;
	}
    return 0;
}

测试过程

首先打上断点,跑起来
在这里插入图片描述
这样,就完成了赋值操作
然后就可以查看内存的值了,这里的数组是char类型(1个字节)的,数组名是首地址
可以使用x/nfu addr命令来打印内存的值,
意思是以f格式,打印从addr开始的n个长度单元为u的内存值

  • n:输出单元的个数
  • f:输出的格式,x为16进制形式,o为八进制,u为十进制,t为二进制
  • u:一个单元的长度,b是一个byte,h是两个byte,w是四个byte(一个word)

以16进制格式打印数组前16个byte的值
在这里插入图片描述

以8进制格式打印数组前16个byte的值
在这里插入图片描述

以十进制格式打印数组前16个byte的值
在这里插入图片描述

以二进制格式打印数组前16个byte的值
在这里插入图片描述

以16进制格式打印数组前16个word的值
在这里插入图片描述

现在我们换成int类型的数组来看一下,由于int类型占用四个字节,那我们会得到什么样的结果呢
可以看到,每四个字节才完成一次赋值操作。
在这里插入图片描述

使用$_

在使用了x或者是info等命令后,会把最后检查的内存地址存在 $_ 中,并且把地址中的内容放在 $__
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CSDN_dzh/article/details/84874368
今日推荐