获取进程使用的页面列表

Get the list of pages used by a process

如何在给定 PID 的情况下获取进程使用的页面列表?对于每一页,我想知道它的起始地址(应该以 12*0 位结尾,因为页面是 4KB?),以及它是否是 writable/executable。基于 GDB 的解决方案也不错,因为我正在使用它进行调试。

进程的虚拟内存页从其 pid 的映射在 /proc 文件系统中可见,在 man proc(5) 中有描述:伪文件映射应该足够了,伪文件 smaps 显示了更多细节。

cat /proc/[pid]/maps
cat /proc/[pid]/smaps