我正在编写一个用于核心转储分析的工具,我想要打印的一件事是估算进程在转储时使用了多少虚拟内存.这些核心转储可能是由于崩溃造成的,或者可以使用gcore手动获取(例如,用于调整大小).基本上,我想打印相当于PS VSZ列.
我已经研究过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
Run Code Online (Sandbox Code Playgroud)
我使用gcore取核心,此时它使用4,206,592字节的VSZ.然后我写了一个快速脚本,解析info target输出并对地址范围求和,得到1,814,528字节.我也试过,info proc mappings但似乎只有在进程运行时才有效.
有任何想法吗?