Memory debugger
This article needs additional citations for verification. (December 2011) |
Program execution |
---|
General concepts |
Types of code |
Compilation strategies |
|
Notable runtimes |
|
Notable compilers & toolchains |
|
A memory debugger is a
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.
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
Comparison to static analyzer
Some
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.
Name | OS | License | Languages | Technique |
---|---|---|---|---|
AddressSanitizer
|
Linux, Mac OS | Free/open source (LLVM) | C, C++. | Compile-time instrumentation (available in Clang and GCC) and specialized library |
Allinea DDT
|
Linux, Blue Gene | Proprietary commercial | C, C++ and F90. Also for parallel programs on supercomputers | Runtime - through dynamic linking |
AQtime | Windows (Visual Studio, Embarcadero IDEs) | Proprietary commercial | .NET, C++, Java, Silverlight, JScript, VBScript[3] | Runtime |
Bcheck | Solaris | |||
BoundsChecker | Windows (Visual Studio) | Proprietary commercial | C++ | Runtime intercepts or compile-time |
Daikon | Unix, Windows, Mac OS X[4] | Free/open source[5] | Java, C/C++, Perl, and Eiffel[4] | Runtime dynamic invariant detection |
Debug_new | (general technique) | (general technique) | C++ | Compile-time override |
Deleaker | Windows (standalone, and plugins for Visual Studio, RAD Studio, Qt Creator, CLion) | Proprietary commercial | C++, .Net, Delphi | Runtime intercepts |
dmalloc | Any | Free/open source | C | Compile-time override |
DynamoRIO § Dr. Memory | Android, Linux, Windows | Free/open source (LGPL and BSD) | Any | Runtime intercepts |
Electric Fence | Unix | GNU GPL | C, C++ | Compile-time override |
FASTMM4 | Windows | GNU GPL | Delphi | Compile-time override |
IBM Rational Purify
|
Unix, Windows | Proprietary commercial | C++, Java, .NET | Runtime |
Insure++ | Windows (Visual Studio plugin), Unix | Proprietary commercial | C, C++ | source code instrumentation |
Intel Inspector | Windows (Visual Studio), Linux | Proprietary commercial | C, C++, Fortran | Runtime |
libcwd | Linux (gcc) | Free/open source | C, C++ | Compile-time override |
libumem | Solaris | Bundled with Solaris | Link-time override | |
Memwatch | Any (programming library) | Free/open source | C | Compile-time override |
mtrace | Various | GNU LGPL | GNU C library | Built-in, outputs accesses |
MTuner | Various | Free | C, C++ | Runtime intercepts, Link-time override (MSVC, Clang and GCC), Leak detection |
Oracle Solaris Studio (formerly Sun Studio Runtime Checking)
|
Linux, Solaris | Proprietary freeware | C, C++, Fortran | |
OLIVER (APT international) | MVS, MVS/EXA, DOS/VSE | Proprietary software | IBM Assembler | Runtime intercepts, Hypervisor - Type 2 |
TotalView | Unix, Mac OS X | Proprietary commercial | C, C++, Fortran | Runtime |
Valgrind § Memcheck | Linux, Mac OS, Android | GNU GPL | Any | Runtime intercepts |
WinDbg | Windows | Proprietary freeware | C, C++, .NET, Python | Runtime |
See also
- Profiling (computer programming)
- List of performance analysis tools
- Debugger
- Runtime error detection
- Software testing
- Software engineering
- Computer programming
- Core dump
References
- Michael C. Daconta: C++ Pointers and Dynamic Memory Management, John Wiley & Sons, ISBN 0-471-04998-0
- ISBN 0-201-17928-8
- ^ "Review: 5 memory debuggers for Linux coding". 20 November 2015. Retrieved August 24, 2017.
- ^ "Dynamic Analysis vs. Static Analysis". Retrieved August 24, 2017.
- ^ "Managed Code - AQtime Pro | SmartBear". Archived from the original on 2013-09-19. Retrieved 2013-01-14.
- ^ a b "The Daikon Invariant Detector User Manual".
- ^ "The Daikon Invariant Detector User Manual".
External links
- "Hunting Memory Bugs" by Ivan Skytte Jørgensen
- "Comparison of Free Memory Checkers" by Jean-Philippe Martin [full citation needed]