GDB:列出崩溃进程的所有映射内存区域
我已经从x86 Linux计算机(如果重要的是内核2.6.35-22)上的一个死进程中获得了一个全堆核心转储,我正在尝试在GDB中进行调试。
我可以使用一个GDB命令来表示“向我显示此进程分配的所有内存地址区域的列表吗?” 换句话说,我能找出我可以在此转储中检查的所有可能的有效内存地址吗?
我问的原因是,我需要在 整个进程堆中 搜索某个二进制字符串,并且要使用该find
命令,我需要具有一个起始地址和结束地址。简单地从0x00到0xff
..搜索是行不通的,因为find
一旦遇到无法访问的地址,它就会暂停:
(gdb)查找/ w 0x10000000、0xff000000、0x12345678
警告:无法访问目标内存,地址为0x105ef883,暂停搜索。
因此,我需要获取内存中所有可读地址区域的列表,以便可以一次搜索它们。
(我需要做的原因 是 是,我需要找到所有的结构在内存里 的 某个地址。)
没有show mem
,show proc
,info mem
,info proc
似乎做什么,我需要。
回答:
在GDB 7.2中:
(gdb) help info procShow /proc process information about any running process.
Specify any process id, or use the program being debugged by default.
Specify any of the following keywords for detailed info:
mappings -- list of mapped memory regions.
stat -- list a bunch of random process info.
status -- list a different bunch of random process info.
all -- list all available /proc info.
您需要info proc mappings
,除非它在没有时/proc
(例如在pos-mortem调试期间)不起作用。
试试吧maintenance info sections
。
以上是 GDB:列出崩溃进程的所有映射内存区域 的全部内容, 来源链接: utcz.com/qa/418482.html