• c/c++内存调试


     

    Leaktracer,Valgrind,ElectricFence

     

    内存泄漏分类

    以发生的方式来分类,内存泄漏可以分为4类:

    常发性

    发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

    偶发性

    发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。

    一次性

    发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块且仅一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。

    隐式

    程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释 放了所有申请的内存。但是对于一个服务器程序,需要运行几天、几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄 漏为隐式内存泄漏。

     

     

     

    检测工具

    部分工具
    1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。
    2.Dmalloc-Debug Malloc Library.
    3.Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。
    4.Leaky-Linux下检测内存泄漏的程序。
    5.LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。
    6.MEMWATCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。
    7.Valgrind-Debugging and profiling Linux programs, aiming at programs written in C and C++.
    8.KCachegrind-A visualization tool for the profiling data generated by Cachegrind and Calltree.
    9.IBM Rational PurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus 将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。
    10.ParasoftInsure++-针对C/C++应用的运行时错误自动检测工具,它能够自动监测C/C++程序,发现其中存在着的内存破坏、内存泄漏、指针错误和I/O等错误。并通过使用一系列独特的技术(SCI技术和变异测试等),彻底的检查和测试我们的代码,精确定位错误的准确位置并给出详细的诊断信息。能作为MicrosoftVisual
    C++
    的一个插件运行。
    11.Compuware DevPartner for Visual C++ BoundsChecker Suite-为C++开发者设计的运行错误检测和调试工具软件。作为Microsoft Visual Studio和C++ 6.0的一个插件运行。
    12.Electric Software GlowCode-包括内存泄漏检查,code profiler,函数调用跟踪等功能。给C++和.Net开发者提供完整的错误诊断,和运行时性能分析工具包。
    13.Compuware DevPartner Java Edition-包含Java内存检测,代码覆盖率测试,代码性能测试,线程死锁,分布式应用等几大功能模块。
    14.Quest JProbe-分析Java的内存泄漏。
    15.ej-technologies JProfiler-一个全功能的Java剖析工具,专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。
    16.BEAJRockit-用来诊断Java内存泄漏并指出根本原因,专门针对Intel平台并得到优化,能在Intel硬件上获得最高的性能。
  • 相关阅读:
    线圈与触发器
    线圈
    sourceinsight 宏
    linu  micro time
    删除 .svn 文件夹
    !!!
    ACE_MAIN
    窗体的一些主要属性
    http协议的几个概念
    保留每个name的最新日期的数据
  • 原文地址:https://www.cnblogs.com/jingzhishen/p/6025447.html
Copyright © 2020-2023  润新知