Memory debugger
Encyclopedia
A memory debugger is a programming tool
for finding memory leak
s and buffer overflow
s. 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.
is such a debugger which debugs memory allocation with malloc
. Some memory debuggers (e.g:Valgrind
) works 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.
As abnormally high memory utilization can be a contributoring 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.
useful for memory debugging. A profiler
can be used in conjunction with a memory debugger.
Programming tool
A programming tool or software development tool is a program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications...
for finding memory leak
Memory leak
A memory leak, in computer science , occurs when a computer program consumes memory but is unable to release it back to the operating system. In object-oriented programming, a memory leak happens when an object is stored in memory but cannot be accessed by the running code...
s and buffer overflow
Buffer overflow
In computer security and programming, a buffer overflow, or buffer overrun, is an anomaly where a program, while writing data to a buffer, overruns the buffer's boundary and overwrites adjacent memory. This is a special case of violation of memory safety....
s. These are due to bugs
Software bug
A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or causes it to behave in unintended ways. Most bugs arise from mistakes and errors made by people in either a program's...
related to the allocation and deallocation of dynamic memory. Programs written in languages that have garbage collection
Garbage collection (computer science)
In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
, such as managed code
Managed code
Managed code is a term coined by Microsoft to identify computer program code that requires and will only execute under the "management" of a Common Language Runtime virtual machine ....
, might also need memory debuggers, e.g. for memory leaks due to "living" references in collections.
Overview
Memory debuggers work by monitoring memory access, allocations, and deallocation of memory. Many memory debuggers required to recompile applications with special dynamic memory allocation libraries whose APIs are mostly compatible with conventional dynamic memory allocation libraries to enable debugging (or use dynamic linking). Electric FenceElectric Fence
Electric Fence is a memory debugger written by Bruce Perens. It consists of a library which programmers can link into their code to override the C standard library memory management functions...
is such a debugger which debugs memory allocation with malloc
Malloc
C dynamic memory allocation refers to performing dynamic memory allocation in the C via a group of functions in the C standard library, namely malloc, realloc, calloc and free....
. Some memory debuggers (e.g:Valgrind
Valgrind
Valgrind is a GPL licensed programming tool for memory debugging, memory leak detection, and profiling. The name valgrind comes from the main entrance to Valhalla in Norse mythology....
) works 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.
As abnormally high memory utilization can be a contributoring factor in software aging
Software aging
In software engineering, software aging refers to progressive performance degradation or a sudden hang/crash of a software system due to exhaustion of operating system resources, fragmentation and accumulation of errors. A proactive fault management method to deal with the 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.
List of memory debugging tools
This is a list of toolsProgramming tool
A programming tool or software development tool is a program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications...
useful for memory debugging. A profiler
Performance analysis
In software engineering, profiling is a form of dynamic program analysis that measures, for example, the usage of memory, the usage of particular instructions, or frequency and duration of function calls...
can be used in conjunction with a memory debugger.
- AQtimeAQtimeAQtime is a performance profiler and memory/resource debugging toolset developed by SmartBear Software. It is integrated into Microsoft Visual Studio, Visual Studio Test Projects and Embarcadero RAD Studio that allows analyzing the application without leaving the development environment.- Overview...
- BcheckBcheckIn the Solaris operating system, bcheck , is a memory access and memory leak checking tool based on dbx_debugger.-External links:*...
- BoundsCheckerBoundsCheckerBoundsChecker is a memory checking and API call validation tool used for C++ software development with Microsoft Visual C++. It was created by Nu-Mega Technologies in the early 1990s. When Nu-Mega was purchased by Compuware in 1997, BoundsChecker became part of a larger tool suite, DevPartner...
- DaikonDaikon (system)For other uses, see Daikon Daikon is a computer program that detects likely invariants of programs. An invariant is a condition that always holds true at certain points in the program...
- Debug newDebug newDebug_new refers to a technique in C++ to overload and/or redefine operator new and operator delete in order to intercept the memory allocation and deallocation calls, and thus debug a program for memory usage. It often involves defining a macro named DEBUG_NEW, and makes new become something like...
- dmallocDmallocDmalloc is a memory debugger C library, written by Gray Watson, that helps programmers to find a variety of memory allocation programming errors for dynamic memory...
- DumaDuma (software)Detect Unintended Memory Access is a memory debugger. It consists of a library which programmers can link into their code to override the C standard library and C++ memory management functions...
- Electric FenceElectric FenceElectric Fence is a memory debugger written by Bruce Perens. It consists of a library which programmers can link into their code to override the C standard library memory management functions...
- IBM Rational Purify
- Insure++Insure++Insure++ is a memory debugger computer program, used by software developers to detect various errors in programs written in C and C++. It is made by Parasoft, and is functionally similar to other memory debuggers, such as Purify and Valgrind.-Overview:...
- Intel Parallel InspectorIntel Parallel InspectorIntel Parallel Inspector adds memory and thread checking into Microsoft Visual Studio. Parallel Inspector helps increase the reliability, security, and accuracy of C/C++ applications.* Reliability: Find deadlocks and memory errors that cause lockups & crashes...
- libcwdLibcwdLibcwd is a C++ library, written by , to add run-time debugging support for C++ applications. The functionality that the library adds to an application can be divided into three categories:# Ostream based debug output.# Run-time access to debug information....
- libumemLibumem-Summary:Libumem is a library used to detect memory management bugs in applications. It is based on the Slab allocator concept. Libumem is available as a standard part of the Solaris Operating System from Solaris 9 Update 3 onwards.-Functions:...
- MemCheckMemCheckMemCheck is a name claimed by a few different computer programs, all of which are designed to check for various memory problems, such as memory leaks and out of bounds access....
- MemwatchMemwatchMemwatch is a free programming tool for memory leak detection in C, released under the GNU General Public License.It is designed to compile and run on any system which has an ANSI C compiler. While it is primarily intended to detect and diagnose memory leaks, it can also be used to analyze a...
- mpatrol
- mtraceMtracemtrace is the memory debugger included in the GNU C Library.- Use :The function mtrace installs handlers for malloc, realloc and free; the function muntrace disables these handlers...
- IBM OLIVER (CICS interactive test/debug)
- Sun Studio Runtime Checking (RTC)
- SPlintSplintSplint may refer to:* Splint , a medical device for the immobilization of limbs or spine* Splint , a device for checking computer programs...
- TotalViewTotalViewTotalView is a proprietary debugger for C/C++ and Fortran code that runs on Unix-like operating systems such as Linux and Mac OS X systems, on several platforms....
- ValgrindValgrindValgrind is a GPL licensed programming tool for memory debugging, memory leak detection, and profiling. The name valgrind comes from the main entrance to Valhalla in Norse mythology....
- WinDBGWinDbgWinDbg is a multipurposed debugger for Microsoft Windows, distributed on the web by Microsoft. It can be used to debug user mode applications, drivers, and the operating system itself in kernel mode...
See also
- Software testingSoftware testingSoftware testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...
- Software engineeringSoftware engineeringSoftware Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
- Computer programmingComputer programmingComputer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...
- Core dumpCore dumpIn computing, a core dump consists of the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally...
- Profiler
- DebuggerDebuggerA debugger or debugging tool is a computer program that is used to test and debug other programs . The code to be examined might alternatively be running on an instruction set simulator , a technique that allows great power in its ability to halt when specific conditions are encountered but which...
External links
- "Hunting Memory Bugs" by Ivan Skytte Jørgensen
- "Comparison of Free Memory Checkers" by Jean-Philippe Martin