1. 到官網http://valgrind.org/downloads/上下載下傳valgrind最新版本;
2. 解壓源碼,執行./configure;make;make install後,預設安裝到/usr/local/bin下,執行:
valgrind ls -l
3. 提示:
==14336== Memcheck, a memory error detector
==14336== Copyright (C) 2002-2011, and GNU GPL\'d, by Julian Seward et al.
==14336== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==14336== Command: ls -l
==14336==
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: strlen
valgrind: in an object with soname matching: ld-linux-x86-64.so.2
valgrind: was not found whilst processing
valgrind: symbols from the object with soname: ld-linux-x86-64.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.
大概是說我的glibc是個strip後的版本,需要下載下傳debug版,debug版的名字是libc6-dbg。
執行:
sudo apt-get install libc6-dbg
4. 再次執行valgrind ls -l,輸出:
==14378== Memcheck, a memory error detector
==14378== Copyright (C) 2002-2011, and GNU GPL\'d, by Julian Seward et al.
==14378== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==14378== Command: ls -l
==14378==
total 108
drwxr-xr-x 2 root root 4096 2012-07-13 03:26 bin
drwxr-xr-x 3 root root 4096 2012-07-13 07:36 boot
drwxr-xr-x 2 root root 4096 2012-07-13 07:06 cdrom
drwxr-xr-x 17 root root 3620 2012-07-24 03:00 dev
drwxr-xr-x 128 root root 12288 2012-07-24 03:06 etc
drwxr-xr-x 3 root root 4096 2012-07-13 08:16 home
lrwxrwxrwx 1 root root 33 2012-07-13 07:07 initrd.img -> boot/initrd.img-2.6.32-38-generic
drwxr-xr-x 16 root root 12288 2012-07-13 03:23 lib
drwxr-xr-x 2 root root 4096 2012-07-13 03:24 lib32
lrwxrwxrwx 1 root root 4 2012-07-13 07:03 lib64 -> /lib
drwx------ 2 root root 16384 2012-07-13 07:03 lost+found
drwxr-xr-x 4 root root 4096 2012-07-13 02:13 media
drwxr-xr-x 2 root root 4096 2012-02-03 04:21 mnt
drwxr-xr-x 2 root root 4096 2012-07-13 07:03 opt
dr-xr-xr-x 182 root root 0 2012-07-24 02:58 proc
drwx------ 8 root root 4096 2012-07-24 21:25 root
drwxr-xr-x 2 root root 4096 2012-07-16 01:21 sbin
drwxr-xr-x 2 root root 4096 2009-12-05 17:25 selinux
drwxr-xr-x 2 root root 4096 2012-07-13 07:03 srv
drwxr-xr-x 13 root root 0 2012-07-24 02:58 sys
drwxrwxrwx 2 root root 4096 2012-07-16 01:39 tftpboot
drwxrwxrwt 14 root root 4096 2012-07-24 21:31 tmp
drwxr-xr-x 11 root root 4096 2012-07-13 03:23 usr
drwxr-xr-x 15 root root 4096 2012-07-13 07:31 var
lrwxrwxrwx 1 root root 30 2012-07-13 07:07 vmlinuz -> boot/vmlinuz-2.6.32-38-generic
drwxrwxrwx 6 root root 4096 2012-07-24 03:02 work
==14378==
==14378== HEAP SUMMARY:
==14378== in use at exit: 20,081 bytes in 58 blocks
==14378== total heap usage: 1,798 allocs, 1,740 frees, 164,568 bytes allocated
==14378==
==14378== LEAK SUMMARY:
==14378== definitely lost: 240 bytes in 3 blocks
==14378== indirectly lost: 480 bytes in 20 blocks
==14378== possibly lost: 0 bytes in 0 blocks
==14378== still reachable: 19,361 bytes in 35 blocks
==14378== suppressed: 0 bytes in 0 blocks
==14378== Rerun with --leak-check=full to see details of leaked memory
==14378==
==14378== For counts of detected and suppressed errors, rerun with: -v
==14378== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 2 from 2)
看來ls這個指令是沒有任何記憶體問題的。。。
