转储Linux中进程的页表条目

时间:2012-11-09 04:53:22

标签: linux linux-kernel mmu

我想知道Linux(x86-64)中是否有任何实用程序/代码可以转储给定进程(用户)地址空间的每个页表项?

由于

2 个答案:

答案 0 :(得分:7)

我认为/proc/pid/pagemap/proc/pid/maps包含此信息,但我不知道有任何工具以更有意义的格式转储它们。

您始终可以使用内核文档自行编写:

http://www.kernel.org/doc/Documentation/vm/pagemap.txt

答案 1 :(得分:0)

我最近用来执行此操作的脚本:

cat /proc/self/maps | while read line
do
    echo ${line}
    echo ${line} | awk '{print $1}' | (
        IFS=- read start end
        start=$(( 0x${start} ))
        end=$(( 0x${end} ))
        addr=${start}
        while [ ${addr} -lt ${end} ]
        do
            printf "%08x: " ${addr}
            dd if=/proc/self/pagemap bs=8 skip=$(( addr / 4096 )) count=1 2>/dev/null | od -v -t x8 -A none
            addr=$(( addr + 4096 ))
        done
    )
done