Memory debugger
Encyclopedia
A memory debugger is a programming tool
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 Fence
Electric 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 tools
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...

 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.
  • AQtime
    AQtime
    AQtime 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...

  • Bcheck
    Bcheck
    In the Solaris operating system, bcheck , is a memory access and memory leak checking tool based on dbx_debugger.-External links:*...

  • BoundsChecker
    BoundsChecker
    BoundsChecker 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...

  • Daikon
    Daikon (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 new
    Debug new
    Debug_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...

  • dmalloc
    Dmalloc
    Dmalloc 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...

  • Duma
    Duma (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 Fence
    Electric 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...

  • 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 Inspector
    Intel Parallel Inspector
    Intel 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...

  • libcwd
    Libcwd
    Libcwd 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....

  • libumem
    Libumem
    -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:...

  • MemCheck
    MemCheck
    MemCheck 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....

  • Memwatch
    Memwatch
    Memwatch 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
  • mtrace
    Mtrace
    mtrace 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)
  • SPlint
    Splint
    Splint may refer to:* Splint , a medical device for the immobilization of limbs or spine* Splint , a device for checking computer programs...

  • TotalView
    TotalView
    TotalView 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....

  • 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....

  • WinDBG
    WinDbg
    WinDbg 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 testing
    Software testing
    Software 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 engineering
    Software engineering
    Software 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 programming
    Computer programming
    Computer 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 dump
    Core dump
    In 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
  • Debugger
    Debugger
    A 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

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK