检查二进制文件的映射

Inspection of binary file's mapping

如果我 运行 Linux 下的某个程序,我可以在 /proc/pid/smaps 中看到其二进制文件的一部分映射到物理内存。例如:

08047000-0804d000 r-xp 00000000 b4:04 2845       /usr/bin/test_prog
Size:                 24 kB
Rss:                  20 kB
Pss:                  20 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:        20 kB
Private_Dirty:         0 kB
Referenced:           20 kB
...

(映射了 24 kB 中的 20 个)

我怎样才能准确地看到二进制文件的哪些部分被映射了?如果我理解正确,根据 this 答案字段 address in /proc/pid/maps 显示整个文件在虚拟内存中的起始和结束地址。我可以使用哪个工具来调查加载二进制文件的虚拟内存的哪一部分映射到 RAM?

/proc/pid/pagemap可以提供这样的信息。文档是 here.