c - 如何在 GDB 中分析非类型化缓冲区

标签 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)"- 访问它的值

关于c - 如何在 GDB 中分析非类型化缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45195979/

相关文章:

c - 随机运行中的段错误

c - 如何知道 C 中的 char 数组是否有空元素?

无法为结构成员赋值

linux - 为什么GDB在附加到tracee时可以屏蔽tracee的SIGKILL

linux - GDB 不会中断动态加载的 .so 文件?

android - run-as 包 'a.b.c' 未知 - Galaxy S4 Jellybean 或 Android 4.3

c - 近似Pi/Taylor级数;提示用户输入

c++ - 是否有任何理由在没有方法的 header 上使用 extern "C"?

c++ - 如何在 gdb/TotalView 中为复杂类型编写 native C++ 调试器可视化工具

c - 使用 gdb 和 core 文件进行调试时输出消息不清晰