Linux c++上常用内存泄露检测工具有valgrind, Rational purify。Valgrind免费。Valgrind 可以在 32 位或 64 位 PowerPC/Linux 内核上工作。

Valgrind工具包包含多个工具,如Memcheck,Cachegrind,Helgrind, Callgrind,Massif。

对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实Linux系统下有一个使用的工具可以帮忙来调试的,这就是Mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法。

使用Mtrace来调试程序有4个基本的步骤,需要用到GNU C 函数库里面的一些辅助的函数功能。

1. 在需要跟踪的程序中需要包含头文件,而且在main()函数的最开始包含一个函数调用:mtrace()。由于在main函数的最开头调用了mtrace(),所以该进程后面的一切分配和释放内存的操作都可以由mtrace来跟踪和分析。

2. 定义一个环境变量,用来指示一个文件。该文件用来输出log信息。如下的例子:

$export MALLOC_TRACE=mymemory.log

3. 正常运行程序。此时程序中的关于内存分配和释放的操作都可以记录下来。

4. 然后用mtrace使用工具来分析log文件。例如:

$mtrace testmem $MALLOC_TRACE

下面是具体一个例子,大家可以看一下。

[hwang@langchao test]$ cat testmtrace.c

#include

#include

#include

int main()

{

char *hello;

mtrace();

hello = (char*) malloc(20);

sprintf(hello,"

hello world!");

return 1;

}

[hwang@langchao test]$export MALLOC_TRACE=mytrace.log

[hwang@langchao test]$ gcc testmtrace.c -o testmtrace

[hwang@langchao test]$./testmtrace

[hwang@langchao test]$ mtrace testmtrace mytrace.log

Memory not freed:

-----------------

Address Size Caller

0x08049860 0x14 at /usr/src/build/53700-i386/BUILD/glibc-2.2.4/csu/init.c:0

linux内核内存溢出检测,linux下有什么检测内存溢出的工具相关推荐

  1. linux内核 lts长期演进,Linux Kernel 4.19 将成为下一个LTS(长期支持)系列

    最近Linux内核开发人员和维护人员Greg Kroah-Hartman透露,Linux Kernel 4.19将下一个长期支持的Linux内核系列. 现在Linux Kernel 4.17已经达到使 ...

  2. linux内核启动分析 三,Linux内核分析 实验三:跟踪分析Linux内核的启动过程

    贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 ...

  3. 一文了解linux内核,一文了解Linux的系统结构

    什么是 Linux ? 如果你以前从未接触过Linux,可能就不清楚为什么会有这么多不同的Linux发行版.在查看Linux软件包时,你肯定被发行版.LiveCD和GNU之类的术语搞晕过.初次进入Li ...

  4. Linux内核入门-如何获取Linux内核源代码、生成配置内核

    如何获取Linux内核源代码 如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包.除 ...

  5. Linux内核开发_1_编译LInux内核

    目录 1. 准备工作 1.1 学习环境 1.2 下载Linux内核源码 1.3 解压Linux内核 1.4 目录结构介绍 2. Linux内核配置 2.1 配置选项 1. make config 2. ...

  6. 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )

    文章目录 一.Linux 内核中的进程状态 二.TASK_RUNNING 状态 三.TASK_RUNNING 状态 四.TASK_UNINTERRUPTIBLE 状态 五.__TASK_STOPPED ...

  7. linux内核学习之三:linux中的32位与64位

    linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...

  8. 在win10查看本机linux的文件,Windows 10变身开发者利器:内置Linux内核,轻松查看Linux子系统文件...

    原标题:Windows 10变身开发者利器:内置Linux内核,轻松查看Linux子系统文件 来源:创事记 终于!在Windows里可以访问Linux文件了. 这表明,微软插入开源界的触角,越来越深入 ...

  9. linux内核培训广州,嵌入式Linux驱动开发高级培训班-华清远见嵌入式培训中心

    课程目标 本课程以案例教学为主,系统地介绍Linux下有关FrameBuffer.MMC卡.USB设备的驱动程序开发.参加本课程学习的学员,因为具备了Linux设备驱动开发基础,所以本课程针对性较强, ...

  10. 查看linux内核的编译时间,linux内核编译步骤

    linux内核编译步骤 对于linux新手来说,编译内核相对有一些难度,甚至不知道如何入手,我通过在网上收集这方面的资料,最终编译成功.现在我归纳了一下,写出这一篇还算比较详细的步骤,希望能对各位新手 ...

最新文章

  1. canvas绘制正文形并填充-2
  2. Rainbond v5.1.2发布,微服务架构应用便捷管理和交付
  3. Java-线程间通信小结
  4. java实践_Java怪异实践
  5. 创建api java,如何创建静态Java API?
  6. 对datatable类型列名排序_表格数据的排序功能(支持多列)
  7. 为什么莫名其妙的就被调用了
  8. 关于array.sort(array,array)
  9. [20] 鼓状物(Drum)图形的生成算法
  10. iOS的5种图片缩略技术以及性能探讨
  11. 用C++获取屏幕上某点的颜色
  12. eclipse设置护眼豆沙色
  13. Word查找替换详细用法及通配符一览表
  14. 178685-33-1,Azide-PEG3-Tos叠氮化物(N3)基团通过点击化学与炔烃、BCN、DBCO反应
  15. allegro如何快设置快捷键旋转器件
  16. 加盟店可靠吗?如何识破加盟骗局?
  17. Linux文件系统层级结构图和vim中三个模式的命令
  18. BZOJ 3687 简单题
  19. 15个值得推荐的个人提升方法
  20. Kurento-6.7.1 媒体服务器搭建详细教程(Kurento-Media-Server)

热门文章

  1. 递归算法在生成树型结构中,几乎完全属于无稽的算法
  2. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 12课
  3. java 构建 数字 list_数字全排列返回list的list:java实现
  4. cscope索引软链接解决方法
  5. 高通平台手机开发之Bring-up
  6. 为什么你很努力,进步却很慢?
  7. xcode checkout验证错误解决方法
  8. Systemd 入门教程:命令篇、实战篇
  9. jeecgboot 前端环境搭建_94.精读Serverless 给前端带来了什么
  10. pythondocx更新目录_python根目录