用Valgrind定位子進程內存泄漏

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章