我已經從x86 Linux機器上的死進程(如果它很重要,內核2.6.35-22)有一個全堆核心轉儲,我試圖在GDB中進行調試。GDB:列出崩潰進程的所有映射內存區域
是否有一個GDB命令我可以使用它的意思是「顯示一個由該進程分配的所有內存地址區域的列表?」換句話說,我能弄清楚在這個轉儲中我可以檢查的所有可能的有效內存地址是什麼?
的原因,我想問的是,我需要跨越整個進程堆來搜索特定的二進制字符串,並以使用find
命令,我需要有一個開始和結束地址。簡單地從0x00搜索到0xff的..不起作用,因爲find
儘快停止,因爲它遇到一個地址不能訪問:
(GDB)找到/ W 0x10000000處,0xff000000, 0x12345678的
警告:無法訪問0x105ef883的目標內存,暫停 搜索。
因此,我需要獲得內存中所有可讀地址區域的列表,以便我可以一次搜索一個。
(我之所以要做那是我需要找到在內存中,在某個地址指向所有的結構。)
無的show mem
,show proc
,info mem
,info proc
似乎做我需要的。
這是我嘗試的第一件事情之一,但它似乎是空的(標題行下沒有任何東西)。也許這對核心轉儲不起作用? – Crashworks 2011-04-17 04:52:13
賓果,謝謝! – Crashworks 2011-04-17 05:22:17
'維修信息部分'似乎更便攜,應該是這裏的主要答案。 – phihag 2012-02-23 11:56:45