我正在编写一个用于核心转储分析的工具,其中一件我想打印的事情是在转储时进程使用了多少虚拟内存。这些核心转储可能是由于崩溃或手动使用gcore(例如用于大小调整)。实际上,我想打印出相当于PS VSZ列的信息。
我已经研究了readelf和gdb并专注于后者。例如,我有一个简单的程序只会挂起,在PS中看到:
我已经研究了readelf和gdb并专注于后者。例如,我有一个简单的程序只会挂起,在PS中看到:
$ ps auxwww | grep a.out
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 16644 0.0 0.0 4108 472 pts/5 S+ 13:51 0:00 ./a.out
我使用gcore获取了一个核心文件,此时它正在使用4,206,592字节的VSZ。然后我编写了一个快速脚本来解析info target
输出并总结地址范围,结果显示为1,814,528字节。我还尝试了info proc mappings
,但似乎只能在进程运行时使用。
你有什么想法吗?