我从x86 Linux机器上的一个死进程(内核2.6.35-22,如果有必要的话)中得到了一个完整的堆核心转储,我正试图在GDB中调试它.
是否有一个GDB命令可以用来表示"向我显示此进程分配的所有内存地址区域的列表?"换句话说,我能找出我可以在这个转储中判断的所有可能的有效内存地址吗?
我问这个问题的原因是,我需要在entire process heap中搜索某个二进制字符串,为了使用find
命令,我需要有一个起始地址和结束地址.只需从0x00搜索到0xff..不起作用,因为find
遇到无法访问的地址时会立即停止:
(Gdb)find/w 0x10000000,0xff000000, 0x12345678
警告:无法访问0x105ef883处的目标内存,正在停止
因此,我需要获得内存中所有可读地址区域的列表,以便可以一次搜索一个地址区域.
(我需要做that的原因是我需要在内存中找到指向某个地址的所有 struct .)
show mem
、show proc
、info mem
、info proc
似乎都不能满足我的需求.