如果我在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个)
我怎样才能确切地看到二进制文件的哪些部分被映射?如果我理解正确,根据/proc/pid/maps中的答案字段address显示虚拟内存中整个文件的起始和结束地址。我可以使用哪个工具来调查虚拟内存的哪个部分(二进制文件加载的位置)映射到RAM?
最佳答案
/proc/pid/pagemap
可以提供这样的信息。文档here。