valgrind试用手记
来源:互联网 发布:淘宝排行榜工具在哪 编辑:程序博客网 时间:2024/05/16 07:47
作者:帅得不敢出门 C++哈哈堂群31843264 转载请保留此信息
valgrind
Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and
threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.
下载:
svn co svn://svn.valgrind.org/valgrind/trunk valgrind
安装:
cd valgrind
./autogen.sh
./configure --prefix=...
make
sudo make install
使用方法:要检测的程序必须加-g选项,推荐使用-O0,不优化
内存检测:
如果你运行程序时命令是这样的:
myprog arg1 arg2
检测时改成这样:
valgrind --leak-check=yes myprog arg1 arg2 ,默认是memcheck
valgrind --tool=cachegrind myprog arg1 arg2 ,这个调用的则是cachegrind,输出结果在当前目录下的cachegrind.out.<pid> pid为程序的pid
Valgrind工具包包含多个工具,如Memcheck,Cachegrind,Helgrind, Callgrind,Massif,你可以用上面的--tool=来指定,指定时没有大写
exp-ptrcheck, a heap, stack and global array overrun detector
valgrind --tool=exp-ptrcheck --log-file=val.log ./fbv -g /windows/F/photos/102_4085.JPG
输出如下:
==17627== exp-ptrcheck, a heap, stack and global array overrun detector
==17627== NOTE: This is an Experimental-Class Valgrind Tool
==17627== Copyright (C) 2003-2010, and GNU GPL'd, by OpenWorks Ltd et al.
==17627== Using Valgrind-3.7.0.SVN and LibVEX; rerun with -h for copyright info
==17627== Command: ./fbv -g /windows/F/photos/102_4085.JPG
==17627== Parent PID: 2448
==17627==
==17627==
==17627== For counts of detected and suppressed errors, rerun with: -v
==17627== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
valgrind --tool=callgrind ./fbv -g /windows/F/photos/102_4085.JPG 同时另一个命令行下运行:
callgrind_control -b
输出如下:
PID 17678: ./fbv -g /windows/F/photos/102_4085.JPG [requesting 'Status'...]
Frame: Backtrace for Thread 1
[ 0] rotate (1 x)
[ 1] show_image (1 x)
[ 2] main (1 x)
[ 3] (below main) (1 x)
[ 4] 0x080495a0 (1 x)
[ 5] 0x00000850
程序结束后,产生文件callgrind.out.<pid>
callgrind_annotate [options] callgrind.out.<pid> 产生较精简的函数summary
Massif is a heap profiler. It measures how much heap memory your program uses. This includes both the useful space,
and the extra bytes allocated for book-keeping and alignment purposes. It can also measure the size of your
program's stack(s), although it does not do so by default.
valgrind --tool=massif ./fbv -g /windows/F/photos/102_4085.JPG 生成堆使用情况的log
ms_print massif.out.19747 对log做些处理产生可易理解的信息
--------------------------------------------------------------------------------
n time(i) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
46 444,727,063 12,190,488 12,190,464 24 0
47 444,727,955 12,715,808 12,715,776 32 0
48 446,465,375 12,190,488 12,190,464 24 0
49 446,466,273 15,336,224 15,336,192 32 0
50 456,720,045 15,336,224 15,336,192 32 0
100.00% (15,336,192B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
->61.54% (9,437,184B) 0x8049820: show_image (in /home/zengming/workspace/fbv/fbv)
| ->61.54% (9,437,184B) 0x804A87D: main (in /home/zengming/workspace/fbv/fbv)
............
DHAT is a tool for examining how programs use their heap allocations.
valgrind --tool=exp-dhat ./fbv -g /windows/F/photos/102_4085.JPG
==19813==
==19813== ======== SUMMARY STATISTICS ========
==19813==
==19813== guest_insns: 456,751,347
==19813==
==19813== max_live: 15,336,192 in 4 blocks
==19813==
==19813== tot_alloc: 16,539,148 in 25 blocks
==19813==
==19813== insns per allocated byte: 27
==19813==
==19813==
==19813== ======== ORDERED BY decreasing "max-bytes-live": top 10 allocators ========
==19813==
==19813== -------------------- 1 of 10 --------------------
==19813== max-live: 9,437,184 in 1 blocks
==19813== tot-alloc: 9,437,184 in 1 blocks (avg size 9437184.00)
==19813== deaths: 1, at avg age 456,008,575 (99.83% of prog lifetime)
==19813== acc-ratios: 0.25 rd, 1.00 wr (2,359,296 b-read, 9,437,184 b-written)
==19813== at 0x4026BB4: malloc (vg_replace_malloc.c:236)
==19813== by 0x8049821: show_image (in /home/zengming/workspace/fbv/fbv)
==19813== by 0x804A87E: main (in /home/zengming/workspace/fbv/fbv)
...............
英文说明:http://www.valgrind.org/docs/manual/manual.html
- valgrind试用手记
- 试用valgrind
- vs2005试用手记
- 新思创OA试用手记
- lucene1.4.3 试用手记
- StrutsTestCase 试用手记
- Ougishi试用手记
- debian试用手记
- JIRA3.5.2试用手记
- Delphi2006试用手记
- JavaDB试用手记
- mule - 试用手记(一)
- SharpDevelop2.2试用手记
- mono试用手记
- Google Chrome 试用手记
- Jaxcent试用手记
- IncrediBuild 试用手记
- 6220c试用手记..
- 定制Android模拟器skin
- ASP.NET前台代码绑定后台变量方法总结
- 内核头文件传奇【转帖】
- Linux新手要了解的十个知识点
- UNIX文件系统:硬链接与符号链接
- valgrind试用手记
- map的基本操作
- 内核态可以修改常量?
- GetLocalTime
- Web.config配置文件详解 Web.config配置文件详解
- onstat -d 標誌位相關解釋
- 锐捷NBR100恢复出厂设置
- 块设备请求的具体实现(MTD)
- 电子商务专题