valgrind 是帮助程序员寻找程序里的 bug 和改进程序性能的工具集,擅长发现内存的管理问题,里面有若干工具,其中最重要的是 memcheck 工具,用于检查内存的泄漏。
memcheck 能发现如下的问题:
- 使用未初始化的内存
- 使用已经释放了的内存
- 使用超过 malloc() 分配的内存
- 对堆栈的非法访问
- 申请的内存是否有释放
- malloc/free、new/delete 申请和释放内存的匹配
- memcpy() 内存拷贝函数中源指针和目标指针重叠
安装 valgrind 的命令如下:
sudo apt-get install valgrind
检查内存泄漏的命令如下:
valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./nginx
-
--tool=memcheck
:使用 valgrind 工具集中的 memcheck 工具
-
--leak-check=full
:指的是完全(full)检查内存泄漏
-
--show-reachable=yes
:显示内存泄漏的地点
-
--trace-children=yes
:是否跟入子进程
-
--log-file=log.txt
:将调试信息输出到 log.txt,不输出到屏幕