【发布时间】:2021-10-05 20:21:49
【问题描述】:
我从 x86 Linux 机器上的死进程(内核 2.6.35-22,如果重要的话)得到了一个全堆核心转储,我正试图在 GDB 中调试它。
有没有我可以使用的 GDB 命令,意思是“向我显示此进程分配的所有内存地址区域的列表?”换句话说,我能弄清楚我可以在这个转储中检查的所有可能的有效内存地址吗?
我问的原因是我需要在整个整个进程堆中搜索某个二进制字符串,并且为了使用find 命令,我需要有一个开始和结束地址。简单地从 0x00 搜索到 0xff.. 是行不通的,因为 find 一遇到无法访问的地址就会停止:
(gdb) 查找 /w 0x10000000, 0xff000000, 0x12345678
警告:无法访问 0x105ef883 处的目标内存,正在暂停 搜索。
所以我需要获取内存中所有可读地址区域的列表,以便一次搜索一个。
(我需要这样做 that 的原因是我需要在内存中找到所有指向 at 某个地址的结构。)
show mem、show proc、info mem、info proc 似乎都没有满足我的需求。
【问题讨论】: