C语言 如何在 /proc/$PID/maps 文件中识别 STACK 和堆段



我可以识别/proc/$PID/maps文件中的文本,ds和bss段(通过猜测或借助特定段的访问说明符)。但是堆和堆栈段是按顺序给出的。有没有办法识别哪个段属于堆栈,哪个属于堆?

----- 如何识别此示例中堆和堆栈之间的界限----------0a8a0000-0ab2e000 rw-p 0a8a0000 00:00 0 [堆]
















包含当前映射的内存区域和他们的访问权限。

格式为:

address           perms offset  dev   inode      pathname
08048000-08049000 r-xp 00000000 03:00 8312       /opt/test
08049000-0804a000 rw-p 00001000 03:00 8312       /opt/test
0804a000-0806b000 rw-p 00000000 00:00 0          [heap]
a7cb1000-a7cb2000 ---p 00000000 00:00 0
a7cb2000-a7eb2000 rw-p 00000000 00:00 0
a7eb2000-a7eb3000 ---p 00000000 00:00 0
a7eb3000-a7ed5000 rw-p 00000000 00:00 0          [stack:1001]
a7ed5000-a8008000 r-xp 00000000 03:00 4222       /lib/libc.so.6
a8008000-a800a000 r--p 00133000 03:00 4222       /lib/libc.so.6
a800a000-a800b000 rw-p 00135000 03:00 4222       /lib/libc.so.6
a800b000-a800e000 rw-p 00000000 00:00 0
a800e000-a8022000 r-xp 00000000 03:00 14462      /lib/libpthread.so.0
a8022000-a8023000 r--p 00013000 03:00 14462      /lib/libpthread.so.0
a8023000-a8024000 rw-p 00014000 03:00 14462      /lib/libpthread.so.0
a8024000-a8027000 rw-p 00000000 00:00 0
a8027000-a8043000 r-xp 00000000 03:00 8317       /lib/ld-linux.so.2
a8043000-a8044000 r--p 0001b000 03:00 8317       /lib/ld-linux.so.2
a8044000-a8045000 rw-p 0001c000 03:00 8317       /lib/ld-linux.so.2
aff35000-aff4a000 rw-p 00000000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
其中"地址"

是它所占用的进程中的地址空间,"perms"是一组权限:

r = read
 w = write
 x = execute
 s = shared
 p = private (copy on write)
"偏移量"是

映射的偏移量,"dev"是设备(主要:次要),并且"inode"是该设备上的索引节点。 0 表示没有关联索引节点与内存区域一样,就像 BSS(未初始化的数据)一样。"路径名"显示此映射的关联文件的名称。 如果映射未与文件关联:

 [heap]                   = the heap of the program
 [stack]                  = the stack of the main process
 [stack:1001]             = the stack of the thread with tid 1001
 [vdso]                   = the "virtual dynamic shared object",
                            the kernel system call handler

或者,如果为空,则映射是匿名的。(来源 https://www.kernel.org/doc/Documentation/filesystems/proc.txt)

相关内容

  • 没有找到相关文章

最新更新