gcc 程序内存使用分析

来源:互联网 发布:志鸿优化系列赢在高考 编辑:程序博客网 时间:2024/06/05 13:00

前提:

程序使用gcc编译的, 并且编译时加入了-g

命令:

valgrind  --vgdb=yes --tool=massif  <程序启动命令>

如  valgrind  --vgdb=yes --tool=massif ./dbserver 0 0


有两种分析方式:

1) 程序退出是分析运行过程中的内存变化

当程序退出出会生成采样文件 massif.out.<pid>  例如 massif.out.6430


使用ms_print命令把采样文件转成可阅读的文件:

ms_print massif.out.<pid> ><out_file>

如 ms_print massif.out.6430 > ms_print.out.6430 

2)程序运行时, 分析当前内存占用

可以使用gdb attach到运行中的程序, 不过由于程序是运行在valgrind环境之下, gdb命令有所改变

在shell中输入:

gdb <程序> 

如 gdb dbserver

待gdb加载程序完毕之后, 输入:

target remote | vgdb

这时候gdb就已经attach到程序上了, 除了使用正常的gdb命令之外, 可以使用massif的特殊命令.

一个比较有用的功能是采样当前内存使用情况并输出到文件

在gdb shell中输入

monitor detailed_snapshot

会在当前目录下产出一个massif.vgdb.out 的文件, 即为本次采样数据






0 0
原创粉丝点击