Linux使用valgrind来检测程序的内存泄漏

时间:2021-06-15 15:17:44

1.到http://valgrind.org/下载最新版本的valgrind

2.加压后,可以查看README文件,参照readme的指示进行如下的操作:

  1). Run ./configure, with some options if you wish.  The only interesting
     one is the usual --prefix=/where/you/want/it/installed.

  2). Run "make".

  3). Run "make install", possibly as root if the destination permissions
     require that.  --- Ubuntu下需要root权限,即应该这样运行: sudo make install

  4). See if it works.  Try "valgrind ls -l".  Either this works, or it
     bombs out with some complaint.  In that case, please let us know
     (see www.valgrind.org).

可能会出现以下的错误:

valgrind:  Fatal error at startup: a function redirection
valgrind: which is mandatory for this platform-tool combination
valgrind: cannot be set up. Details of the redirection are:
valgrind:
valgrind: A must-be-redirected function
valgrind: whose name matches the pattern: index
valgrind: in an object with soname matching: ld-linux.so.2
valgrind: was not found whilst processing
valgrind: symbols from the object with soname: ld-linux.so.2
valgrind:
valgrind: Possible fixes: (1, short term): install glibc's debuginfo
valgrind: package on this machine. (2, longer term): ask the packagers
valgrind: for your Linux distribution to please in future ship a non-
valgrind: stripped ld.so (or whatever the dynamic linker .so is called)
valgrind: that exports the above-named function using the standard
valgrind: calling conventions for this platform. The package you need
valgrind: to install for fix (1) is called
valgrind:
valgrind: On Debian, Ubuntu: libc6-dbg
valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo
valgrind:
valgrind: Cannot continue -- exiting now. Sorry.

 以上错误,是因为在Ubuntu下还需要一个LIB:libc6-dbg

运行:sudo apt-get install libc6-dbg 以安装libc6-dbg

然后再次运行: valgrind ls -l

 

使用的时候,可以按照如下的方式使用:

valgrind --tool=memcheck --leak-check=full ./hellworld