1. valgrind跟蹤子進程
以下例子用spawn-cgi來測試驗證,spawn-cgi會生成一個cgi子進程
--trace-children=yes:valgrind加上該參數用於跟蹤子進程
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. 如何生成報告
跟蹤子進程後,valgrind變成服務後臺運行了,正常在終端生成報告只需要按ctrl-c即可,如果是調試子進程,那麼可以模擬ctrl-c,發送給對應的valgrind服務進程,ctrl-c對應的信號爲SIGINT,valgrind會捕捉該信號,並生成報告,命令如下:
kill -s SIGINT pid
3. 查看報告
這步就不用多說了,直接打開a.log,查看definitely lost對應的地方即可,需要分析是否真爲內存泄漏,還是隻是分配一次性的內存,這就和程序的具體邏輯相關了
轉載地址:https://www.jianshu.com/p/d85bd1ef8f45