Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Memory debugger
Software memory problem finder

A memory debugger is a debugger for finding software memory problems such as memory leaks and buffer overflows. These are due to bugs related to the allocation and deallocation of dynamic memory. Programs written in languages that have garbage collection, such as managed code, might also need memory debuggers, e.g. for memory leaks due to "living" references in collections.

We don't have any images related to Memory debugger yet.
We don't have any YouTube videos related to Memory debugger yet.
We don't have any PDF documents related to Memory debugger yet.
We don't have any Books related to Memory debugger yet.
We don't have any archived web articles related to Memory debugger yet.

Overview

Memory debuggers work by monitoring memory access, allocations, and deallocation of memory. Many memory debuggers require applications to be recompiled with special dynamic memory allocation libraries, whose APIs are mostly compatible with conventional dynamic memory allocation libraries, or else use dynamic linking. Electric Fence is such a debugger which debugs memory allocation with malloc. Some memory debuggers (e.g. Valgrind) work by running the executable in a virtual machine-like environment, monitoring memory access, allocation and deallocation so that no recompilation with special memory allocation libraries is required.

Finding memory issues such as leaks can be extremely time consuming as they may not manifest themselves except under certain conditions. Using a tool to detect memory misuse makes the process much faster and easier.1

As abnormally high memory utilization can be a contributing factor in software aging, memory debuggers can help programmers to avoid software anomalies that would exhaust the computer system memory, thus ensuring high reliability of the software even for long runtimes.

Comparison to static analyzer

Some static analysis tools can also help find memory errors. Memory debuggers operate as part of an application while it's running while static code analysis is performed by analyzing the code without executing it. These different techniques will typically find different instances of problems, and using them both together yields the best result.2

List of memory debugging tools

This is a list of tools useful for memory debugging. A profiler can be used in conjunction with a memory debugger.

NameOSLicenseLanguagesTechnique
AddressSanitizerLinux, Mac OSFree/open source (LLVM)C, C++, RustCompile-time instrumentation (available in Clang and GCC) and specialized library
Allinea DDTLinux, Blue GeneProprietary commercialC, C++ and F90. Also for parallel programs on supercomputersRuntime - through dynamic linking
AQtimeWindows (Visual Studio, Embarcadero IDEs)Proprietary commercial.NET, C++, Java, Silverlight, JScript, VBScript3Runtime
BcheckSolaris
BoundsCheckerWindows (Visual Studio)Proprietary commercialC++Runtime intercepts or compile-time
DaikonUnix, Windows, Mac OS X4Free/open source5Java, C/C++, Perl, and Eiffel6Runtime dynamic invariant detection
Debug_new(general technique)(general technique)C++Compile-time override
DeleakerWindows (standalone, and plugins for Visual Studio, RAD Studio, Qt Creator, CLion)Proprietary commercialC++, .Net, DelphiRuntime intercepts
dmallocAnyFree/open source (ISC License)CCompile-time override
DynamoRIO § Dr. MemoryAndroid, Linux, WindowsFree/open source (LGPL and BSD)AnyRuntime intercepts
Electric FenceUnixGNU GPLC, C++Compile-time override
FASTMM4WindowsGNU GPLDelphiCompile-time override
IBM Rational PurifyUnix, WindowsProprietary commercialC++, Java, .NETRuntime
Insure++Windows (Visual Studio plugin), UnixProprietary commercialC, C++source code instrumentation
Intel InspectorWindows (Visual Studio), LinuxProprietary commercialC, C++, FortranRuntime
libcwdLinux (gcc)Free/open sourceC, C++Compile-time override
libumemSolarisBundled with SolarisLink-time override
MemwatchAny (programming library)Free/open sourceCCompile-time override
mtraceVariousGNU LGPLGNU C libraryBuilt-in, outputs accesses
MTunerVariousFreeC, C++Runtime intercepts, Link-time override (MSVC, Clang and GCC), Leak detection
Oracle Solaris Studio (formerly Sun Studio Runtime Checking)Linux, SolarisProprietary freewareC, C++, Fortran
OLIVER (APT international)MVS, MVS/EXA, DOS/VSEProprietary softwareIBM AssemblerRuntime intercepts, Hypervisor - Type 2
TotalViewUnix, Mac OS XProprietary commercialC, C++, FortranRuntime
Valgrind § MemcheckLinux, Mac OS, AndroidGNU GPLAnyRuntime intercepts
WinDbgWindowsProprietary freewareC, C++, .NET, PythonRuntime

See also

  • Michael C. Daconta: C++ Pointers and Dynamic Memory Management, John Wiley & Sons, ISBN 0-471-04998-0
  • Andrew Koenig: C Traps and Pitfalls, Addison-Wesley, ISBN 0-201-17928-8

References

  1. "Review: 5 memory debuggers for Linux coding". 20 November 2015. Retrieved August 24, 2017. http://www.computerworld.com/article/3003957/linux/review-5-memory-debuggers-for-linux-coding.html

  2. "Dynamic Analysis vs. Static Analysis". Retrieved August 24, 2017. https://software.intel.com/en-us/inspector-user-guide-windows-dynamic-analysis-vs-static-analysis

  3. "Managed Code - AQtime Pro | SmartBear". Archived from the original on 2013-09-19. Retrieved 2013-01-14. https://web.archive.org/web/20130919153515/http://smartbear.com/products/qa-tools/application-performance-profiling/profiling-managed-code

  4. "The Daikon Invariant Detector User Manual". http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html

  5. "The Daikon Invariant Detector User Manual". http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html#License

  6. "The Daikon Invariant Detector User Manual". http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html