【问题标题】:GDB to do find pointers in a given memory areaGDB 在给定的内存区域中查找指针
【发布时间】:2011-12-28 00:42:33
【问题描述】:

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

例子:

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

如果调试程序中有一个叫S的指针,它的地址是0x442033,并且指向0x442039的地址,所以输出应该是:

0x442033 --> 0x442039

我的问题是如何使用 GDB 来查找指针的地址?如何实现这一点?谢谢。

【问题讨论】:

    标签: python memory gdb


    【解决方案1】:

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

    如果调试程序中有一个叫S的指针,它的地址是0x442033

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

    如果您希望在给定内存中找到“任何”指针(find 不会这样做),那么您可能做错了:任何重要的程序都会有 100 或 1000 个指针,并且正在寻找对于“任何”(而不是您感兴趣的特定指针)可能表明您不了解您的程序。

    【讨论】:

    • 我想在给定的内存区域中找到指针,无论指针代表“s”还是其他,我只想找到该区域中的所有指针,可以吗?因为赋值是这样的:使用python脚本并创建一个gdb命令,让它可以识别给定内存区域中的所有指针。
    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2018-09-24
    • 1970-01-01
    • 2017-08-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    相关资源
    最近更新 更多