我想将Python脚本输入到GDB中,这个脚本用于创建一个新命令,假设其名称为'fp',其功能是在给定的内存区域中搜索,检查该区域是否包含指针在程序中,如果该存储区中有指针,该命令将打印指针的地址并打印指针指向的地址。
示例:
(gdb)fp 0x442032 100 (第一个参数是起始地址,100是搜索的大小)
如果在调试程序中有一个名为S的指针,其地址为0x442033并指向地址0x442039,因此输出应为:
0x442033 - > 0x442039
我的问题是如何使用GDB查找指针的地址?怎么实现这个?感谢。
答案 0 :(得分:1)
您可能正在寻找GDB内置find
命令。文档here。
如果在调试程序中有一个名为S的指针,则其地址为0x442033
如果有一个指针S
,其地址几乎肯定不是0x442033
,因为加载未对齐的数据会带来严重的性能损失。
如果你想在给定的内存中找到“任意”指针(find
不会这样做),你可能做错了什么:任何非平凡的程序都会有100或1000个指针,并且寻找“任何”(而不是您感兴趣的特定指针)可能表示您不理解您的程序。