C语言 如何在 GDB 中分析非类型化缓冲区



我正在开发一个C应用程序,该应用程序可以将大量二进制数据写入和读取文件。文件访问是按页面完成的,就像在数据库中一样。

现在,假设我们阅读一个页面,例如

char *buf = malloc(PAGE_SIZE); pread(fd, buf, PAGE_SIZE, nth * PAGE_SIZE);

我想知道的是:有没有一种方便的方法来分析buf将它们重新解释为GDB中的其他类型的内容?例如,如何检查此页面开头0x3F处的double值是否3.14

提前谢谢。

试试这个:

print *((double*)buf+0x3f)
  • (buf+0x3f( - 指向内存中有趣部分的指针
  • (double*((ptr( - 将其转换为指向 double 的指针
  • "*(PTR(" - 访问其值

最新更新