Google Heap Checker
http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html
使用方法很簡單, 只要在compiler程式的時候增加 -ltcmalloc 的參數就可以了。
不過我是在Ubuntu上面使用 遇到一些使用上的小問題。順便解說一下
首先在Ubuntu 可以用 sudo apt-get install google-perftool 來安裝
但是安裝完之後會少一個symbolic link
所以需要先
$ sudo ln -s /usr/lib/libtcmalloc.so.0 /usr/lib/libtcmalloc.so.0
他有多種使用方法,我只介紹我用到的方法
dump heap然後比較heap的差異
其他有興趣的可以自行google
要執行程式的時候
$ HEAPPROFILE=/tmp/heapfile ./my-program
這樣會每隔一段時間你的heap 有變化的的時候 會dump到
/tmp/heapfile.0001.heap
/tmp/heapfile.0002.heap
/tmp/heapfile.0003.heap
/tmp/heapfile.0004.heap
這樣就可以比較兩個不同時間點的heap
比較的工具是 pprof
但是Ubuntu裡面有另外一個叫做 pprof的工具
所以在Ubuntu裡面改名為 google-pprof ,別用錯了
想看heap內容的時候可以
$ google-pprof --gv /path/to/my-program /tmp/heapfile.0001.heap
要比較兩個heap差別時
$ google-pprof --gv --base=/tmp/heapfile.0001.heap /path/to/my-program /tmp/heapfile.0003.heap
圖的長相可以看這邊http://goog-perftools.sourceforge.net/doc/heap_profiler.html
有整個call graph,還會把差越多的block畫的越大塊。
非常好用,我就是用這個找到一個小小的leak。
希望對大家以後跟memory leak奮戰可以很快結束。
順便說,另外一個同系列的performance profile也很好用喔
No comments:
Post a Comment