我正在尝试使用pmap -x
命令查看Linux x86-64上进程的内存映射。看着pmap的输出我感到困惑。特别是用于映射动态库的条目。他们有多个条目(其中大部分都是4条,有些条目有3条)。以下是一个示例了解pmap输出
Address Kbytes RSS Dirty Mode Mapping
00000036ca200000 88 64 0 r-x-- libpthread-2.5.so
00000036ca216000 2044 0 0 ----- libpthread-2.5.so
00000036ca415000 4 4 4 r---- libpthread-2.5.so
00000036ca416000 4 4 4 rw--- libpthread-2.5.so
每个库的第二行始终大小为2MB,但它没有页面权限。在所有图书馆中,它的RSS总是零。最后两行也具有相同的大小(基本页大小)和相同的权限(少数库没有rw映射)。
有没有人对此有过解释?我有种感觉,可能是只读保护的映射是由加载器完成的,以读取库的元数据,而具有可执行权限的部分实际上是库的代码。但我可能是错的。
但我不知道该中间行。没有许可,没有用法?任何人在这里都有一些智慧的话语?
我还看到几页报告在匿名内存中,没有设置任何模式位。这些代表什么?
[/ proc/$ pid/maps的可能重复显示在x86 \ _64 linux上没有rwx权限的页面](http://stackoverflow.com/questions/16524895/proc-pid-maps-shows-pages-with -no-rwx-permissions-on-x86-64-linux) – 2015-10-26 07:50:51
试图修复typo:*部分的可执行权限实际上是库的代码* ...似乎“is”丢失,但不能100%肯定;你能帮忙吗? – 2015-10-26 21:00:55