Linux 下 代码调试 valgrind 工具说明一

一.  valgrind 工具介绍

valgrind 工具是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。valgrind 工具 是一套 Linux 下,开放源代码的动态调试工具集合。

valgrind 由内核(core)以及基于内核的其他调试工具组成。它包括一个工具集内核类似于一个框架(framework),它模拟了一个 CPU 环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。

二.  valgrind 工具集

valgrind 工具中常用的工具包括如下:

1.  Memcheck 工具:检测内存泄露,内存越界,非法指针等等问题。

一切对malloc() / free() 或 new / delete 的调用都会被捕获。

2.  Callgrind 工具:检测代码的运行时间和调用过程,以及分析程序性能。

Callgrind 收集程序运行时的一些数据,建立函数调用关系图,还可以有选择地进行 cache 模拟。在运行结束时,它会把分析数据写入一个文件。

3.  Cachegrind 工具:分析 CPU 的 cache 命中率、丢失率,用于进行代码优化。

Cachegrind 工具可以模拟 CPU 中的一级缓存和二级缓存,能够精确地指出程序中 cache 的丢失和命中。

4.  Helgrind 工具:用于检查多线程程序中出现的的竞争问题。

Helgrind 工具寻找内存中被多个线程访问,而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,而且会导致难以发现的错误。

5.  Massif 工具:堆栈分析器,主要用来检查程序中堆栈使用中出现的问题。

它能测量程序在堆栈中使用了多少内存,可以看到堆块,堆管理块和栈的大小。

三.  valgrind 安装与使用

1.  valgrind 工具安装

valgrind 工具下载路径为:Valgrind: Current ReleasesOfficial Home Page for valgrind, a suite of tools for debugging and profiling. Automatically detect memory management and threading bugs, and perform detailed profiling. The current stable version is valgrind-3.20.0.icon-default.png?t=N7T8https://valgrind.org/downloads/

首先,将下载下来的安装包 valgrind-3.20.0.tar.bz2 放在 ubuntu 系统中。

其次,解压安装包。进入解压后的文件目录下,输入 命令。

valgrind支持多个平台,根据当前主机配置valgrind 工具。当需要编译在嵌入式设备上使用其他编译器版本的 valgrind 工具时,则需要输入其他配置参数,例如,输入命令:

./configure --host=arm-ca9-linux-gnueabihf CC=arm-ca9-linux-gnueabihf-gcc --prefix=/mnt/valgrind

最后,输入 make 命令进行编译。之后输入 make install 命令进行安装。

./configure之后就有 makefile文件出现,接下来进行 make 编译,安装。

可以输入 valgrind --version 命令查看是否安装成功。如下所示:

可以看到,系统中 valgrind 工具已经安装成功。

2. valgrind 工具使用

valgrind 工具可以直接工作于可执行文件上,因此,在检查前不需要重新编译、连接和修改你的程序。要检查一个程序很简单, valgrind 工具集中,这些工具使用是一样的,只需要执行下面的命令:

valgrind --tool=tool_name 程序名

下一篇,具体说明一下 valgrind 工具的使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值