valgrind 工具使用

内存泄漏检查:
Linux检测程序内存泄漏
1.安装valgrind:
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析、检测线程错误的软件开发工具。mtrace为内存分配函数(malloc, realloc, memalign,free)安装hook函数。这些hook函数记录内存的申请和释放的trace信息。

Valgrind详解:

Valgrind包括以下一些工具:

1.Memcheck:这是valgrind应用最广泛的工具,一个重量级的内存检查器,能够给发现开发中绝大多数的内存错误使用的情况,比如:使用未初始化

2.callgrind:它主要用来检查程序中函数中调用过程中出现的问题

3.cachegrind:它主要用来检查程序中缓存使用出现的问题

4.Helgrind:它主要用来检查多线程中出现的竞争问题

5.Massif:它主要用来检查程序中堆栈使用中出现的问题

6.Extension:可以使用core提供的 功能,自己编写特定的内存调试工具

2.mtrace命令

man 3 mtrace 可以在man 手册中查看该函数

mtrace 也有对应的命令,其使用方式为:
一.将环境变量MALLOC_TRACE设置为所需输出文件的路径名

二.在需要检测的源代码中引入mcheck.h头文件
1.在分配内存之前调用mtrace(); ,一般在main函数的开头调用
2.在结束检测的地方调用muntrace(); ,一般在return之前调用
3.编译程序时需要加上-g 选项

   #include <stdio.h>
   #include <malloc.h>
   #include <mcheck.h>   
   int main()
   {
       mtrace();
       int *p = NULL;
      p =(int *)malloc(sizeof(int) * 1);
     //free(p);//未free,内存泄漏
     muntrace();
     return 0;
  }
valgrind --tool=memcheck --leak-check=full  --show-leak-kinds=all  ./test_permission_manager

valgrind --leak-check=yes检查bufr编解码程序运行时提示still reachable: 568 bytes in 1 blocksÿ

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装Valgrind,您可以按照以下步骤进行操作: 1. 首先,您需要下载Valgrind的安装文件。您可以从官方网站https://sourceware.org/pub/valgrind/下载安装文件。 2. 解压缩下载的文件。您可以使用命令`tar xvf valgrind-3.17.0.tar.bz2`来解压缩文件。 3. 进入解压缩后的目录。使用命令`cd valgrind-3.17.0/`。 4. 运行`./autogen.sh`来设置环境。请确保您已经安装了标准的autoconf工具。 5. 运行`./configure`来配置Valgrind。您可以根据需要设置一些参数,具体信息可以在INSTALL文件中找到。通常,您只需要设置`--prefix=/where/you/want/it/installed`指定安装路径。 6. 使用命令`make`编译Valgrind。 7. 运行`make install`来安装Valgrind。 8. 最后,您可以使用命令`valgrind --version`来验证安装是否成功。 请注意,这些步骤仅适用于Linux系统。如果您使用的是其他操作系统,请参考Valgrind官方文档或相应的安装指南。 另外,如果您遇到权限问题,您可以使用命令`chmod +x valgrind.sh`来修改Valgrind的权限[2]。 Valgrind是一个强大的工具,用于检测内存泄漏和其他错误。使用Valgrind可以帮助您发现潜在的内存错误和线程问题。 在使用Valgrind之前,您可以使用命令`valgrind --tool=helgrind ./your_program`来检测多线程程序中的竞争条件和死锁问题。 这是Valgrind的一个简单使用示例。您可以通过访问非法内存来引发错误,并使用Valgrind来检测和定位问题。 请记住,Valgrind是一个非常强大的工具,可以帮助您提高程序的稳定性和性能。在使用过程中,您可能需要参考更详细的文档和指南,以充分利用Valgrind的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值