首先对源文件进行编译:
- Preparing your program
Compile your program with -g to include debugging information so that Memcheck's error messages include exact line numbers.
-O0 a good idea if you can tolerate the slowdown
-O1 line number in error message can be inaccurate although generally speaking running Memcheck on code compiled at -O1 works fairly well and the speed improvement compared to running -O0 is quite significant.
-O2 not recommended
- Running your program under Memcheck
./myprog arg1 arg2
valgrind --leak-check=yes ./myprog arg1 arg2
your program will run much slower(eg. 20 to 30 times) than normal and use a lot more memory.
然后使用valgrind:
用法: valgrind [options] prog-and-args [options]: 常用选项,适用于所有Valgrind工具
常用选项
- --tool=[default: memcheck]
--tool=memcheck:要求用 memcheck这个工具对程序进行分析
- --log-file=filename
将输出的信息写入到filename.PID 的文件里,PID是运行程序的进行ID
- --log-file-exactly=filename
指定就输出到 filename文件
- --log-socket=IP:PORT
把输出信息发送到网络中指定的IP:PORT 去
- --leak-ckeck=yes
要求对leak给出详细信息
- --leak-check=full
完全检查内存泄漏
- --xml=[default: no]
将信息以xml格式输出,只有 memcheck可用
- --gen-suppressions=[default: no]
如果为yes, valgrind会在每发现一个错误便停下让用户做选择是继续还是退出
- --leak-check=[default: summary]
Leak是指,存在一块没有被引用的内存空间,或没有被释放的内存空间,如 summary,只反馈一些总结信息,告诉你有多少个malloc ,多少个free 等;如果是full 将输出所有的leaks,也就是定位到某一个malloc/free 。
- --show-reachable=[default: no]
如果为 no,只输出没有引用的内存leaks,或指向 malloc返回的内存块中部某处的leaks
- --undef-value-errors=[default: yes]
如果为 yes,memcheck将对无定义值错进行检查
一般我们使用如下命令:
valgrind --log-file-exactly=/path/1.txt --leak-check=full --show-reachable=yes prog-and-args;
分享到:
相关推荐
"arm环境内存泄漏检测工具valgrind"就是这样一个针对ARM平台的专业工具,它能帮助我们识别并解决内存泄漏问题。 Valgrind是一个开源的动态分析工具集,主要用于调试、性能评估和内存错误检测。在ARM环境下,...
`Valgrind` 是一个开源的内存错误检测和性能分析工具,它能够帮助开发者找出程序中的内存泄漏、未初始化的内存访问、无效的指针使用等问题。`Valgrind for NDK` 是将 `valgrind` 工具移植到Android环境,特别是针对...
### Linux内存调试工具Valgrind知识点详解 #### 一、Valgrind简介 Valgrind是一款功能强大的开源软件,主要用于Linux环境下程序的调试与性能分析(profiling)。它由Julian Seward等人开发,并因其出色的工具特性...
Valgrind是一款强大的开源内存分析工具,主要用于检测C和C++程序中的内存错误,包括内存泄漏、无效内存访问以及未初始化的内存使用等问题。这款工具是程序员和软件开发者的重要助手,能够帮助他们发现并修复程序在...
valgrind是一款运行在linux下的,用来定位c/c++程序中内存使用方面的错误的工具,包括:内存泄漏、使用未初始化的内存、读/写已释放的内存、读/写内存越界、使用malloc/new/new[]和free/delete/delete[]不匹配,等等...
Valgrind 是一款开源的内存管理框架,它主要用于构建动态分析工具。作为一个探测框架,Valgrind 包含了一系列工具,这些工具可以帮助开发者完成调试、分析等任务,从而提升程序的质量。Valgrind 的设计具有高度的...
Linux C语言程序内存泄漏检测工具-Valgrind Valgrind 是一款 Linux 下的免费内存调试工具包,包含多个工具,如 Memcheck、Cachegrind、Helgrind、Callgrind、Massif。它可以对编译后的二进制程序进行内存使用监测...
Valgrind是一款强大的开源内存调试、内存泄漏检测和性能分析工具,主要针对Linux系统。它通过模拟硬件执行来检查程序中的错误,对于软件开发者来说,是优化代码和查找内存问题的得力助手。本手册将深入探讨Valgrind...
Valgrind 是一个开源的软件开发工具,用于检测和调试 C 和 C++ 程序中的内存泄漏和其他错误。Valgrind 的名字来自北欧神话中英灵殿的入口。目前,Valgrind 支持多种平台,包括 x86、amd64、arm、ppc32、ppc64 等,...
Valgrind是一款强大的开源调试工具,专用于检测Linux应用程序中的内存问题。它的核心是一个模拟CPU环境的框架,允许其他工具以插件的形式插入并利用这个框架来执行特定的内存检查任务。Valgrind包含了多个子工具,...
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。Valgrind这个名字取自北欧神话中英灵殿的入口。 Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届...
1. **Valgrind**:Valgrind是一款开源的模拟运行时系统,主要用于检测C/C++程序中的内存错误,如内存泄漏、未初始化的内存访问等。同时,它还提供Callgrind这样的性能分析工具,用于收集程序的调用关系和性能数据。 ...
Valgrind是一款非常强大的开源工具套件,主要用于Linux平台上的程序调试与性能分析。它支持多种架构,包括x86、amd64和ppc32。通过Valgrind,开发者可以深入地了解程序在运行时的内存使用情况,例如动态内存分配与...
5. **开源免费**:Valgrind是开源软件,遵循GNU GPL许可证,这意味着任何人都可以免费使用、修改和分发它。 #### 六、Valgrind的安装与配置 1. **下载与安装**:可以从官方网站下载Valgrind的源码包,然后按照官方...
Valgrind是一个强大的开源工具集,用于调试、内存检测和性能分析。它的核心功能是创建一个虚拟机,使得程序在该虚拟机上运行,从而能够监控程序的行为,找出潜在的问题。Valgrind 3.15.0的手册提供了详尽的使用指南...
Valgrind 3.12.0 是一个强大的开源工具集,主要用于动态分析程序的行为,尤其是内存管理和错误检测。这个版本的Valgrind是开发者在寻找内存泄漏、未初始化的内存访问、无效指针引用等问题时的重要帮手。在本文中,...
Valgrind是一款开源的模拟执行框架,它并不直接运行程序,而是通过中间层来模拟程序的执行,从而实现对内存错误、缓存行为、线程同步等问题的检查。Valgrind包含了多个子工具,如Memcheck、Cachegrind、Callgrind等...
Valgrind是一款强大的开源软件开发工具,主要用于内存调试、内存泄漏检测和性能分析。它在Linux环境下尤为常用,为开发者提供了深入的程序行为洞察,帮助找出潜在的问题,从而提高软件的质量和稳定性。Valgrind ...