原文地址::https://www.cnblogs.com/luosongchao/p/3664628.html
相关文章
1、【linux】Valgrind工具集详解(五):命令行详解----https://blog.csdn.net/u010168781/article/details/83744778
2、Linux Valgrind命令----https://www.cnblogs.com/274914765qq/p/4797706.html
3、Linux 之 valgrind命令----https://blog.csdn.net/wutao_water/article/details/38277793
4、Linux下Valgrind的使用笔记----https://www.jianshu.com/p/aded7d874caf
5、【调试】Linux下超强内存检测工具Valgrind----https://www.jianshu.com/p/a967b0bd61b8
6、应用 Valgrind 发现 Linux 程序的内存问题----https://blog.csdn.net/kl222/article/details/40890823
7、Linux下利用Valgrind工具进行内存泄露检测和性能分析----http://blog.sina.com.cn/s/blog_757dbe670101ioal.html
8、内存泄漏检测工具valgrind神器----https://zhuanlan.zhihu.com/p/75416381
Valgrind包括如下一些工具:
- Memcheck。这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。这也是本文将重点介绍的部分。
- Callgrind。它主要用来检查程序中函数调用过程中出现的问题。
- Cachegrind。它主要用来检查程序中缓存使用出现的问题。
- Helgrind。它主要用来检查多线程程序中出现的竞争问题。
- Massif。它主要用来检查程序中堆栈使用中出现的问题。
- Extension。可以利用core提供的功能,自己编写特定的内存调试工具。
valgrind使用:
1、 编译源文件,使用命令g++ -g -O0 segfault.cpp -o segfault
其中参数的含意为:
-g 指示编译器在编译时产生调试信息
-O0 编译器优化等级,O0表示不进行优化
-o 输出文件名称
2、使用valgrind 检查内存
使用如下命令: valgrind --tool=memcheck --leak-check=full --log-file=reportleak ./segfault
参数含意:
--tool=memcheck 使用的工具,默认即为memcheck
--leak-check=full 要求对与内存错误,给出全部信息
--log-file=*** 表示错误输出文件名
3、察看生成的文件:
如上信息指出了程序内存使用错误的位置。
具体源文件如下: