1. valgrind跟蹤子進(jìn)程
以下例子用spawn-cgi來測(cè)試驗(yàn)證蓝牲,spawn-cgi會(huì)生成一個(gè)cgi子進(jìn)程
--trace-children=yes:valgrind加上該參數(shù)用于跟蹤子進(jìn)程
valgrind --leak-check=full --trace-children=yes --tool=memcheck --log-file=a.log spawn-fcgi -a 127.0.0.1 -p 8088 -F 1 -f fastcgi
2. 如何生成報(bào)告
跟蹤子進(jìn)程后滋恬,valgrind變成服務(wù)后臺(tái)運(yùn)行了曼验,正常在終端生成報(bào)告只需要按ctrl-c即可,如果是調(diào)試子進(jìn)程钞楼,那么可以模擬ctrl-c惑惶,發(fā)送給對(duì)應(yīng)的valgrind服務(wù)進(jìn)程,ctrl-c對(duì)應(yīng)的信號(hào)為SIGINT圆凰,valgrind會(huì)捕捉該信號(hào),并生成報(bào)告体箕,命令如下:
kill -s SIGINT pid
3. 查看報(bào)告
這步就不用多說了专钉,直接打開a.log,查看definitely lost對(duì)應(yīng)的地方即可干旁,需要分析是否真為內(nèi)存泄漏驶沼,還是只是分配一次性的內(nèi)存,這就和程序的具體邏輯相關(guān)了