메모리 세그먼트는 Linux 운영 체제의 일부이므로 간단한 C 프로그램이나 Linux 명령을 사용하여 해당 주소를 볼 수 있습니까?
답변1
프로그램을 작성했고 실행 중에 메모리 맵을 보려면 다음과 같은 디버거에서 프로그램을 실행한 다음 실행 gdb
하고 명령을 사용하여 메모리 맵을 보면 info proc mappings
출력은 다음과 같습니다.
(gdb) info proc mappings
process 6520
Mapped address spaces:
Start Addr End Addr Size Offset objfile
0x10000 0x15000 0x5000 0x0 /bin/true
0x24000 0x25000 0x1000 0x4000 /bin/true
0x25000 0x26000 0x1000 0x5000 /bin/true
0x76e6e000 0x76f98000 0x12a000 0x0 /lib/arm-linux-gnueabihf/libc-2.24.so
... etc ...
0x7efdf000 0x7f000000 0x21000 0x0 [stack]
0xffff0000 0xffff1000 0x1000 0x0 [vectors]
실행 중인 프로세스의 맵을 보려면 올바른 권한이 있다고 가정하면 됩니다 cat /proc/<pid>/maps
. 또는 프로세스에 연결하여 gdb -p <pid>
위에서 설명한 작업을 수행할 수 있습니다.