valgrind学习笔记--使用

来源:互联网 发布:ubuntu samba 配置 编辑:程序博客网 时间:2024/06/05 03:59

如果要使用valgrind打印出详细的信息,需要在编译文件的时候加入-g参数

valgrind的使用 参数:

命令行执行

  valgrind--tool=memcheck--leak-check=yes --show-reachable=yes test

–memcheck  检查动态内存的使用
–cachegrind   分析系统cache的使用
–callgrind  类似于gprof(需要-pg编译参数)

        valgrind --tool=callgrind ./e6

        callgrind_anonate --auto=yescallgrind.out.20722

–helgrind  分析多线程之间的资源竞争
–Massif                   堆使用描述工具
基本参数有:

--tool=<name>[default=memcheck]
–选择工具
-v--verbose
–增加警告的级别,可累加
--trace-children=<yes|no>[default:no]
–用以跟踪守护进程和脚本启动的程序,以及多进程程序
--track-fds=<yes|no>[default:no]
–在退出时打印出程序打开的句柄的相关信息
--time-stamp=<yes|no>[default:no]
–打印从程序开始时的时间
--error-limit=<yes|no>[default:yes]
–对检查出来的错误数是否限制
–打开后,可能会运行得很慢,更有可能增加出错率的可能性
--error-exitcode=<number>[default:0]
–指定发现错误后的退出码
–用于一些自动化的测试工具
--gen-suppressions=<yes|no|all>
–生成过滤错误时需要的表达式
--db-attach=<yes|no>
–发现错误时自动调用debug工具
–很方便,能够及时查看代码,定位问题
--leak-check=<no|summary|yes|full>[default:summary]
–在退出时检查是否有泄漏
–summary只是告诉我们有多少次泄漏
–yes或者full会告诉我们每次泄漏的详细信息
--show-reachable=<yes|no>[default:no]
–在退出时检查是否还有指针指向alloc的内存
–如果没有,那么就是不可控的
–我们程序中使用的线程数据就是reachable的
--freelist-vol=<number>[default:5000000]
–增加这个值会占用更多的内存
–就“有可能”发现更多的泄漏

重定向日志:
默认是stderr
--log-fd=fd_num
–指定打印到某个文件描述符
--log-file=filename
–打印到文件,推荐该方法
--log-socket=192.168.0.1:12345
–可以重定向到socket中


e.g.  valgrind --tool=memcheck --leak-check=full --show-reachable=yes --log-file=result ./test_name