GDB在给定的内存区域中查找指针

时间:2011-12-28 00:42:33

标签: python memory gdb

我想将Python脚本输入到GDB中,这个脚本用于创建一个新命令,假设其名称为'fp',其功能是在给定的内存区域中搜索,检查该区域是否包含指针在程序中,如果该存储区中有指针,该命令将打印指针的地址并打印指针指向的地址。

示例:

(gdb)fp 0x442032 100 (第一个参数是起始地址,100是搜索的大小)

如果在调试程序中有一个名为S的指针,其地址为0x442033并指向地址0x442039,因此输出应为:

0x442033 - > 0x442039

我的问题是如何使用GDB查找指针的地址?怎么实现这个?感谢。

1 个答案:

答案 0 :(得分:1)

您可能正在寻找GDB内置find命令。文档here

  

如果在调试程序中有一个名为S的指针,则其地址为0x442033

如果有一个指针S,其地址几乎肯定不是0x442033,因为加载未对齐的数据会带来严重的性能损失。

如果你想在给定的内存中找到“任意”指针(find不会这样做),你可能做错了什么:任何非平凡的程序都会有100或1000个指针,并且寻找“任何”(而不是您感兴趣的特定指针)可能表示您不理解您的程序。