我正在开发一个 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)"- 访问它的值
关于c - 如何在 GDB 中分析非类型化缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195979/