时间剖析器
空间剖析器
其中又数“内存错误检测器”最为强大。
下面介绍如何在ubuntu上安装和使用valgrind。
步骤一:确保valgrind已被安装
sudo apt-get install valgrind
步骤二:去除所有旧的valgrind日志
rm valgrind.log.*
步骤三:在命令memcheck下,启动程序
G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log <program><arguments>
步骤四:程序启动后会持续一段时间,因为valgrind需要执行许多内存检测。
步骤五:想尽一切办法重现问题。
步骤六:如生成多个日志文件,需打包
tar -zcf valgrind-logs-<program>.tar.gz valgrind.log.*
步骤七:将valgrind-logs-<program>.tar.gz中的完整valgrind输出放入bug report中
Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固。Valgrind的主要功能
Valgrind工具包包含多个工具,如Memcheck,Cachegrind,Helgrind, Callgrind,Massif。下面分别介绍个工具的作用:
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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)