IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    查看Unix/Linux进程内存分布

    nanxiao发表于 2020-03-26 05:04:02
    love 0

    在Unix平台,如果要查看某个进程的内存分布,可以使用gdb附着在该进程,再使用“info proc mappings”命令:

    $ sudo gdb -p 1
    ......
    (gdb) info proc mappings
    process 1
    Mapped address spaces:
    
              Start Addr           End Addr       Size     Offset objfile
                0x400000           0x401000     0x1000        0x0 /usr/bin/runit
                0x401000           0x480000    0x7f000     0x1000 /usr/bin/runit
                0x480000           0x4aa000    0x2a000    0x80000 /usr/bin/runit
                0x4ab000           0x4ae000     0x3000    0xaa000 /usr/bin/runit
                0x4ae000           0x4b0000     0x2000        0x0
                0x62d000           0x650000    0x23000        0x0 [heap]
          0x7ffe5e3f3000     0x7ffe5e414000    0x21000        0x0 [stack]
          0x7ffe5e4a4000     0x7ffe5e4a7000     0x3000        0x0 [vvar]
          0x7ffe5e4a7000     0x7ffe5e4a8000     0x1000        0x0 [vdso]
    

    另外在Linux系统上,也可以使用pmap命令:

    $ sudo pmap -x 1
    1:   runit
    Address           Kbytes     RSS   Dirty Mode  Mapping
    0000000000400000       4       4       0 r---- runit
    0000000000401000     508     440       0 r-x-- runit
    0000000000480000     168     124       0 r---- runit
    00000000004ab000      12      12      12 rw--- runit
    00000000004ae000       8       8       8 rw---   [ anon ]
    000000000062d000     140       8       8 rw---   [ anon ]
    00007ffe5e3f3000     132      12      12 rw---   [ stack ]
    00007ffe5e4a4000      12       0       0 r----   [ anon ]
    00007ffe5e4a7000       4       4       0 r-x--   [ anon ]
    ---------------- ------- ------- -------
    total kB             988     612      40
    

    通过查看进程的内存分布,可以了解哪些地址是有效的,可写的;这对于调试有一定帮助。



沪ICP备19023445号-2号
友情链接