我正在编写一个内核模块,它将接受用户进程 id ( PID
) 作为输入并转储该用户进程的所有地址空间,如堆栈、堆段。
我把mm->start_brk
作为堆的开始,mm->brk
作为堆的结束,然后我看到,即使用户进程没有使用 33 页,堆大小显示为 33 页(mm->brk
- mm->start_brk
)。(这我使用验证/proc/pid/maps
)。Stack 也有类似的行为。
那么有什么办法可以找出真正使用的堆mm->start_brk
,这样我就可以只转储使用的堆。