valgrind的安装与使用(内含安装包)

更新时间:2023-05-03 18:59:02 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

技术文档

技术文件名称:valgrind-3.3.1 的安装与使用研究技术文件编号:OS-20110823

版本:

拟制陈泽民

审核

共页

(包括封面)

修改记录

目录

第1章valgrind的安装 .................................................................................................................... - 4 -

1.1 valgrind的介绍 ................................................................................................................... - 4 -

1.2valgrind的安装 .................................................................................................................... - 4 - 第二章valgrind的使用 .................................................................................................................... - 6 -

2.1valgrind的使用与示例 ........................................................................................................ - 6 -

第1章valgrind的安装

1.1 valgrind的介绍

Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。Valgrind这个名字取自北欧神话中英灵殿的入口。

Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind 上的工作获得了第二届Google-O'Reilly开源代码奖。

Valgrind遵守GNU通用公共许可证条款,是一款自由软件。

到 3.6.1版本为止,Valgrind支持{x86,amd64,arm,ppc32,ppc64}-linux and {x86,amd64}-darwin (Mac OS X).

而在CGSL系统中valgrind-3.3.1能很好地运行。

1.2valgrind的安装

本文所应用的平台为NewStart CGSL系统,

(1)在CGSL中解压valgrind-3.3.1.tar.bz2

[root@localhost ~]#tar –jxvf valgrind-3.2.3.tar.bz2

下载压缩包为(右键图标复制到非桌面位置即可):

然后进入

[root@localhost ~]# cd valgrind-3.3.1

[root@localhost valgrind-3.3.1]# ./configure && make && make install

进行安装等待安装完毕后

安装时可能需要几分钟

因为安装时:

Provides :

libpthread.so

libpthread.so.0

valgrind.so

valgrinq.so

valgrind

Requires :

ld-linux.so.2

libc.so.6

libc.so.6

libc.so.6

libc.so.6

/bin/sh

/usr/bin/perl

libc.so.6

Content of RPM :

/usr/bin/cachegrind

/usr/bin/valgrind

/usr/bin/vg_annotate

/usr/doc/valgrind-1.0.4

/usr/doc/valgrind-1.0.4/ACKNOWLEDGEMENTS

/usr/doc/valgrind-1.0.4/AUTHORS

/usr/doc/valgrind-1.0.4/COPYING

/usr/doc/valgrind-1.0.4/ChangeLog

/usr/doc/valgrind-1.0.4/NEWS

/usr/doc/valgrind-1.0.4/PATCHES_APPLIED

/usr/doc/valgrind-1.0.4/README

/usr/doc/valgrind-1.0.4/README_KDE3_FOLKS

/usr/doc/valgrind-1.0.4/README_MISSING_SYSCALL_OR_IOCTL /usr/doc/valgrind-1.0.4/README_PACKAGERS

/usr/doc/valgrind-1.0.4/TODO

/usr/doc/valgrind-1.0.4/index

/usr/doc/valgrind-1.0.4/manual

/usr/doc/valgrind-1.0.4/nav

/usr/doc/valgrind-1.0.4/techdocs

/usr/include/valgrind.h

/usr/lib/valgrind

/usr/lib/valgrind/default.supp

/usr/lib/valgrind/glibc-2.1.supp

/usr/lib/valgrind/glibc-2.2.supp

/usr/lib/valgrind/libpthread.so

/usr/lib/valgrind/libpthread.so.0

/usr/lib/valgrind/valgrind.so

/usr/lib/valgrind/valgrinq.so

/usr/lib/valgrind/xfree-3.supp

/usr/lib/valgrind/xfree-4.supp

第二章valgrind的使用

2.1valgrind的使用与示例

1、用法

valgrind [options] prog-and-args [options]: 常用选项,适用于所有Valgrind工具

-tool= 最常用的选项。运行valgrind中名为toolname的工具。默认memcheck。

h –help 显示帮助信息。

-version 显示valgrind内核的版本,每个工具都有各自的版本。

q –quiet 安静地运行,只打印错误信息。

v –verbose 更详细的信息, 增加错误数统计。

-trace-children=no|yes 跟踪子线程? [no]

-track-fds=no|yes 跟踪打开的文件描述?[no]

-time-stamp=no|yes 增加时间戳到LOG信息? [no]

-log-fd= 输出LOG到描述符文件[2=stderr]

-log-file= 将输出的信息写入到filename.PID的文件里,PID是运行程序的进行ID -log-file-exactly= 输出LOG信息到file

-log-file-qualifier= 取得环境变量的值来做为输出信息的文件名。[none]

-log-socket=ipaddr:port 输出LOG到socket ,ipaddr:port

LOG信息输出

-xml=yes 将信息以xml格式输出,只有memcheck可用

-num-callers= show callers in stack traces [12]

-error-limit=no|yes 如果太多错误,则停止显示新错误? [yes]

-error-exitcode= 如果发现错误则返回错误代码[0=disable]

-db-attach=no|yes 当出现错误,valgrind会自动启动调试器gdb。[no]

-db-command= 启动调试器的命令行选项[gdb -nw %f %p]

适用于Memcheck工具的相关选项:

-leak-check=no|summary|full 要求对leak给出详细信息? [summary]

-leak-resolution=low|med|high how much bt merging in leak check [low]

-show-reachable=no|yes show reachable blocks in leak check? [no]

2、Memcheck 工具主要检查下面的程序错误

使用未初始化的内存(Use of uninitialised memory)

使用已经释放了的内存(Reading/writing memory after it has been free’d)

使用超过malloc分配的内存空间(Reading/writing off the end of malloc’d blocks)

对堆栈的非法访问(Reading/writing inappropriate areas on the stack)

申请的空间是否有释放(Memory leaks –where pointers to malloc’d blocks are lost forever)

malloc/free/new/delete申请和释放内存的匹配(Mismatched use of malloc/new/new [] vs free/delete/delete [])

src和dst的重叠(Overlapping src and dst pointers in memcpy() and related functions)

3、示例(测试一个C)

#include

#include

int main()

{

struct mm{

int a;

int b;

}kk,*p;

kk.a = 10;

printf("kk.a : %d \n",kk.a);

p = (struct mm *)malloc(sizeof(struct mm));

p->a = 9;

printf("p->a : %d \n",p->a);

return 0;

}

操作如下:

[root@localhost ~]# vim hello.c

[root@localhost ~]# gcc -g -o hello hello.c

[root@localhost ~]# ./hello

结果如下:

然后用valgrind命令:

[root@localhost ~]# valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./hello

lost: 8 bytes in 1 blocks.”。即丢失了8个字节。

本文来源:https://www.bwwdw.com/article/kiqe.html

Top