读书人

怎么使用Valgrind

发布时间: 2012-07-28 12:25:13 作者: rapoo

如何使用Valgrind


1. 简介

Valgrind 套件提供了大量的调试和profile工具,帮助我们使自己的程序跑得更快、更准确。这些工具最流行的名字是Memchek。它可以检测到一些与内存相关的错误,这些错误在C或者C++中经常遇到,这些错误可能会导致一些灾难性的后果。

本文简要的讲述如何使用Memcheck进行内存检测。如果有兴趣可以继续看看Valgrind的用户手册。


2. 准备你自己程序

使用-g选项编译你的程序,这样会产生一些调试信息,使用这些信息Valgrind将会精确的查找到错误在源文件的哪一行中。当然也可以使用-O0(如果你可以忍受执行速度下降的话)。如果使用-O1的话,在“错误信息”中显示的行号可能不是很精确。不过一般来讲,使用-O1,Memcheck也会正常工作,并且它可以获得更高的速度。不推荐使用-O2.


3. 使用Memcheck运行你的程序

一般我们会这样运行我们的程序:

==12425== Invalid write of size 4==12425==    at 0x400542: f (a.c:7)==12425==    by 0x400552: main (a.c:12)==12425==  Address 0x51ef068 is 0 bytes after a block of size 40 alloc'd==12425==    at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)==12425==    by 0x400535: f (a.c:6)==12425==    by 0x400552: main (a.c:12)

需要注意的是

在每个错误信息中有很多内容,一定要小心阅读。12425是进程ID号,一般不重要第一行讲的是错误的类型。code address 通常并不重要

读书人网 >编程

热点推荐