Quick Start Guide
快速上手
快速上手列表
1、简介
2、你的程序应当作的准备
3、使用memcheck检测你的程序
4、memcheck输出含义
5、注意事项
6、更多信息
简介
Valgrind系列工具是提供一系列可以使你的程序运行更快更稳定调试、监测工具组。这里面最常用的便是memcheck工具,它能够检测出C和C++程序中的多种致命的内存问题。
下面的使用说明主要是教你快速上手memcheck工具,如何用它来检测你的程序中的内存问题。若想了解memcheck或者其他工具完整的说明文档,请参照用户手册(User Manual)。
你的程序应当作的准备
1、编译程序的时候需要添加-g选项,这样memcheck的报错信息便可以通过调试信息包括具体出错代码的行数。
2、如果你在调试程序时不介意程序的运行速度,那么建议你选择-O0的编译优化选项。如果选择-O1编译优化级别,虽然,memcheck大多数情况下依然是正常工作,报错信息也基本准确,但是错误代码行数有可时会不准确。
3、不推荐使用-O2以上的编译优化级别,memcheck会误报未初始化变量错误。
使用memcheck检测你的程序
若你的程序运行命令如下
myprog arg1 arg2
那么使用如下的格式便可以使用memcheck检查你的程序中的内存问题
valgrind --leak-check=yes myprog arg1 arg2
memcheck是valgrind的默认工具,”–leak-check”选项用于检测内存泄漏。
使用valgrind之后,你的程序运行相较于普通时候会慢20~30倍,并且会占用更多的内存。作为补偿,memcheck工具会详细地打印出它所监测到的内存问题和内存泄漏。
memcheck输出含义
下面的C语言示例程序存在一个内存错误和内存泄漏。
#include <stdlib.h>