以下面代码为例,打印进程的内存信息。代码如下:
#include <stdio.h>
int main(void)
{
int i = 0;
char data[100] = {0};
for(i = 0; i < (sizeof(data)/sizeof(char)); i++)
{
data[i] = i;
}
return 0;
}
在 gdb 调试中,也可以打印进程的内存信息。命令如下:i proc mappings
下面进行 gdb 调试,打印进程的内存信息。操作如下:
首先,在程序某一行打断点。
其次,输入 r 命令运行程序。
最后,输入 i proc mappings 命令打印进程的内存信息。如下所示:
(gdb) i proc mappings
process 4261
Mapped address spaces:Start Addr End Addr Size Offset objfile
0x555555554000 0x555555555000 0x1000 0x0 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
0x555555555000 0x555555556000 0x1000 0x1000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
0x555555556000 0x555555557000 0x1000 0x2000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
0x555555557000 0x555555558000 0x1000 0x2000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
0x555555558000 0x555555559000 0x1000 0x3000 /home/wangtian/Code_Learns/C_Learns/debug/debug2/main.out
0x7ffff7dc3000 0x7ffff7de5000 0x22000 0x0 /usr/lib/x86_64-linux-gnu/libc-2.31.so
0x7ffff7de5000 0x7ffff7f5d000 0x178000 0x22000 /usr/lib/x86_64-linux-gnu/libc-2.31.so
0x7ffff7f5d000 0x7ffff7fab000 0x4e000 0x19a000 /usr/lib/x86_64-linux-gnu/libc-2.31.so
可以看到,输出了进程的内存映射信息。
也可显示更详细的进程内存信息。命令为:i files 命令 或者 i target 命令
包括引用的动态链接库等等。。。
如下所示: