2012-04-09 65 views
1

我想了解如何訪問進程的內存區域,以便打印代碼的起始和結束地址,其數據區域以及堆的開始和結束。 我認爲/proc/$ pid/maps包含進程的開始和結束內存區域,但我想知道是否有另一種方式。也許ptrace()?訪問進程的內存區域

回答

0

/proc/$pid/maps/proc/$pid/smaps是獲取關於進程地址空間映射的信息的最佳方法,但是是linux專用的方式。

您可以使用/proc/$pid/mem來訪問內存區域(注意lseek適當的區域,或使用mmap來訪問它)。

+0

訪問進程的mm_struct是個好主意嗎? – user1321341 2012-04-10 05:57:30

+0

它可能只存在於核心土地上。所以不行。在Linux上,'/ proc'文件系統是查詢進程(和某些系統)相關事物的首選方式。 – 2012-04-10 07:06:34