Comparison of debuggers

Last updated

This is a comparison of debuggers: computer programs that are used to test and debug other programs.

NameFirst releaseDescription Language OS Memory protection? Program animation? License Most recent release
adb 1977 Unix standard debuggerAny compiled to machine code Unix No ? Proprietary
Allinea DDT 2002 Allinea DDT DebuggerAny compiled to machine code Linux Offers guard page for memory usage bugsYes Proprietary 5.1, Aug 2015
GDB 1986 GNU DebuggerAny compiled to machine code Unix-like systems, Windows NoYes GPL 9.1, Feb 2020
IDB 2012 Intel DebuggerAny compiled to machine code Windows, Linux, OS X No ? Proprietary 13.0.1, 2013
LLDB 2003? LLVM DebuggerAny compiled to machine code macOS i386, x86-64 and AArch64, iOS, Linux, FreeBSD, NetBSD, Windows No ? Apache License v2.0 with LLVM Exceptions12.0.1, Jul 2021
mdb 1999 Solaris standard debugger (adb) successorAny compiled to machine code Solaris Yes (Memory debugger) ? CDDL 2016
TotalView 1998Source code and memory serial and parallel debuggerC++, C, CUDA, FORTRAN, MPI, OpenMP Linux, AIX, Solaris, OS X, Cray, Blue Gene [1] Yes (Memory debugger)Yes Proprietary 2016.07, Nov 2016
Undo LiveRecorder 1998Source code and memory serial and parallel time travel debugger [2] C++, C, Go, Rust, Java Linux Yes (Memory debugger)Yes Proprietary 6.4, Apr 2022
Valgrind 2007?tool suite for debugging and profiling Linux programs [3] C, C++, Java, Perl, Python, assembly code, Fortran, Ada, ...Linux, Darwin (Mac OS X), AndroidYes ? GPL 3.17.0, March 2021
Visual Studio Debugger 1995Debugger in Microsoft Visual Studio C++, JavaScript, .net languagesWindows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, Windows Server 2012 R2[4], Windows 10, Windows Server 2016Yes,(Managed)Yes Proprietary March 7, 2017
XPEDITER 1980?family of mainframe debuggers COBOL, PL/1 & Assembler z/OS Yes (CICS)Yes Proprietary z2.1, Oct 2014

See also

Related Research Articles

In computer science, a memory leak is a type of resource leak that occurs when a computer program incorrectly manages memory allocations in a way that memory which is no longer needed is not released. A memory leak may also happen when an object is stored in memory but cannot be accessed by the running code. A memory leak has symptoms similar to a number of other problems and generally can only be diagnosed by a programmer with access to the program's source code.

In computing, a core dump, memory dump, crash dump, storage dump, system dump, or ABEND dump consists of the recorded state of the working memory of a computer program at a specific time, generally when the program has crashed or otherwise terminated abnormally. In practice, other key pieces of program state are usually dumped at the same time, including the processor registers, which may include the program counter and stack pointer, memory management information, and other processor and operating system flags and information. A snapshot dump is a memory dump requested by the computer operator or by the running program, after which the program is able to continue. Core dumps are often used to assist in diagnosing and debugging errors in computer programs.

Debugger Computer program used to test and debug other programs

A debugger or debugging tool is a computer program used to test and debug other programs. The main use of a debugger is to run the target program under controlled conditions that permit the programmer to track its operations in progress and monitor changes in computer resources that may indicate malfunctioning code. Typical debugging facilities include the ability to run or halt the target program at specific points, display the contents of memory, CPU registers or storage devices, and modify memory or register contents in order to enter selected test data that might be a cause of faulty program execution.

A programming tool or software development tool is a computer program that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs, that can be combined to accomplish a task, much as one might use multiple hands to fix a physical object. The most basic tools are a source code editor and a compiler or interpreter, which are used ubiquitously and continuously. Other tools are used more or less depending on the language, development methodology, and individual engineer, often used for a discrete task, like a debugger or profiler. Tools may be discrete programs, executed separately – often from the command line – or may be parts of a single large program, called an integrated development environment (IDE). In many cases, particularly for simpler use, simple ad hoc techniques are used instead of a tool, such as print debugging instead of using a debugger, manual timing instead of a profiler, or tracking bugs in a text file or spreadsheet instead of a bug tracking system.

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.

Valgrind Programming tool for profiling, memory debugging and memory leak detection

Valgrind is a programming tool for memory debugging, memory leak detection, and profiling.

Memory corruption occurs in a computer program when the contents of a memory location are modified due to programmatic behavior that exceeds the intention of the original programmer or program/language constructs; this is termed as violation of memory safety. The most likely causes of memory corruption are programming errors. When the corrupted memory contents are used later in that program, it leads either to program crash or to strange and bizarre program behavior. Nearly 10% of application crashes on Windows systems are due to heap corruption.

Race condition Problem in electronics and software

A race condition or race hazard is the condition of an electronics, software, or other system where the system's substantive behavior is dependent on the sequence or timing of other uncontrollable events. It becomes a bug when one or more of the possible behaviors is undesirable.

PurifyPlus is a memory debugger program used by software developers to detect memory access errors in programs, especially those written in C or C++. It was originally written by Reed Hastings of Pure Software. Pure Software later merged with Atria Software to form Pure Atria Software, which in turn was later acquired by Rational Software, which in turn was acquired by IBM, and then divested to UNICOM Systems, Inc. on Dec 31, 2014. It is functionally similar to other memory debuggers, such as Insure++, Valgrind and BoundsChecker.

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, Valgrind and Dr Memory.

Dangling pointer Pointer that does not point to a valid object

Dangling pointers and wild pointers in computer programming are pointers that do not point to a valid object of the appropriate type. These are special cases of memory safety violations. More generally, dangling references and wild references are references that do not resolve to a valid destination, and include such phenomena as link rot on the internet.

Julian Seward Compiler writer and Free Software contributor

Julian Seward is a British compiler writer and Free Software contributor who lives in Stuttgart. He is commonly known for creating the bzip2 compression tool in 1996, as well as the valgrind memory debugging toolset founded in 2000. In 2006, he won a second O'Reilly Open Source Award for his work on Valgrind.

Dynamic program analysis is the analysis of computer software that is performed by executing programs on a real or virtual processor. For dynamic program analysis to be effective, the target program must be executed with sufficient test inputs to cover almost all possible outputs. Use of software testing measures such as code coverage helps ensure that an adequate slice of the program's set of possible behaviors has been observed. Also, care must be taken to minimize the effect that instrumentation has on the execution of the target program. Dynamic analysis is in contrast to static program analysis. Unit tests, integration tests, system tests and acceptance tests use dynamic testing.

Memory safety is the state of being protected from various software bugs and security vulnerabilities when dealing with memory access, such as buffer overflows and dangling pointers. For example, Java is said to be memory-safe because its runtime error detection checks array bounds and pointer dereferences. In contrast, C and C++ allow arbitrary pointer arithmetic with pointers implemented as direct memory addresses with no provision for bounds checking, and thus are potentially memory-unsafe.

Nemiver

Nemiver is computer software, a graphical standalone debugger for the programming languages C and C++, which integrates in the GNOME desktop environment. It currently features a backend which uses the well known GNU Debugger (GDB). The creator and the current lead developer is Dodji Seketeli.

In computer programming and software development, debugging is the process of finding and resolving bugs within computer programs, software, or systems.

DynamoRIO Software framework

DynamoRIO is a BSD licensed dynamic binary instrumentation framework for the development of dynamic program analysis tools. DynamoRIO targets user space applications under the Android, Linux, and Windows operating systems running on the AArch32, IA-32, and x86-64 instruction set architectures.

VOGL

VOGL is a debugger for the OpenGL rendering API intended to be used in the development of video games. VOGL was originally written at RAD Game Tools and Valve. VOGL is free and open-source software subject to the terms of the MIT License.

RIOT (operating system) Real-time operating system

RIOT is a small operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of things (IoT) devices. It is open-source software, released under the GNU Lesser General Public License (LGPL).

References

  1. "TotalView 8.15.10 Platforms and System Requirements" (PDF). Rogue Wave.
  2. "LiveRecorder". Undo.
  3. Valgrind: "About Valgrind".