GDB: The GNU Project Debugger (2024)


What is GDB?

GDB, the GNU Project debugger, allows you to see what is going on`inside' another program while it executes -- or what another programwas doing at the moment it crashed.

GDB can do four main kinds of things (plus other things in supportof these) to help you catch bugs in the act:

  • Start your program, specifying anything that might affect its behavior.
  • Make your program stop on specified conditions.
  • Examine what has happened, when your program has stopped.
  • Change things in your program, so you can experiment withcorrecting the effects of one bug and go on to learn about another.
Those programs might be executing on the same machine as GDB (native),on another machine (remote), or on a simulator. GDB can run on mostpopular UNIX and Microsoft Windows variants, as well as on macOS.

What Languages does GDB Support?

GDB supports the following languages (in alphabetical order):
  • Ada
  • Assembly
  • C
  • C++
  • D
  • Fortran
  • Go
  • Objective-C
  • OpenCL
  • Modula-2
  • Pascal
  • Rust

GDB version 14.2

Version 14.2 of GDB, the GNUDebugger, is now available for download. See the ANNOUNCEMENT for detailsincluding changes in this release.

An errata list (PROBLEMS) and documentationare also available.


May 26th, 2024: GDB 15 branch created

The GDB 15 branch (gdb-15-branch) has been created.To check out a copy of the branch use:

git clone --branch gdb-15-branch
March 3rd, 2024: GDB 14.2 Released!

The latest version of GDB, version 14.2, is available for download.

This is a minor corrective release over GDB 14.1, fixing the followingissues:

  • PR symtab/31112 (DLL export forwarding is broken)
  • PR c++/31128 (gdb crashes when trying to print a global variable stub without a running inferior)
  • PR tdep/31254 ([gdb/tdep, arm] FAIL: gdb.threads/staticthreads.exp: up 10)
  • PR gdb/31256 (Crash with basic 'list .')
  • PR python/31366 (Frame.static_link() segfaults)
See the NEWS file for a more complete and detailed list of what this release includes.
December 3rd, 2023: GDB 14.1 Released!

The latest version of GDB, version 14.1, is available for download.
This version of GDB includes the following changes and enhancements:
  • Removed features, removed configurations:
    • GDB no longer support AiX 4.x, 5.x and 6.x. The minimum version supported is AiX 7.1.
    • GDB/MI version 1 support has been removed
  • Initial built-in support for Debugger Adapter Protocol (DAP)
  • GDB now recognizes the NO_COLOR environment variable
  • Initial support for integer types larger than 64 bits
  • Breakpoints can now be inferior-specific
  • New convenience function "$_shell", to execute a shell command and return its result.
  • Python support
    • New class gdb.Thread
    • New class gdb.unwinder.FrameId
    • New class gdb.ValuePrinter
    • New gdb.Inferior.arguments attribute, holding the command-line arguments to the inferior, if known
    • New gdb.Inferior.main_name attribute, holding the name of the inferior's 'main', if known.
    • New gdb.Breakpoint.inferior attribute
    • New gdb.Progspace.symbol_file attribute
    • New gdb.Progspace.executable_filename attribute
    • New function gdb.execute_mi(COMMAND, [ARG]...)
    • New function gdb.block_signals()
    • New method gdb.Frame.static_link
    • New gdb.Inferior 'clear_env', 'set_env' and 'unset_env' methods
    • New gdb.Type now has the 'is_array_like' and 'is_string_like' methods
    • New gdb.Value 'assign' method
    • New gdb.Value 'to_array' method
    • New gdb.Progspace 'objfile_for_address' method
    • New methods added to the gdb.PendingFrame class, with behavior which is the same as the corresponding methods on gdb.Frame.
    • gdb.LazyString now implements the __str__ method
    • New event gdb.ThreadExitedEvent
    • New event gdb.ExecutableChangedEvent
    • New event gdb.NewProgspaceEvent
    • New event gdb.FreeProgspaceEvent
    • The frame-id passed to gdb.PendingFrame.create_unwind_info now use either an integer or a gdb.Value object for each of its 'sp', 'pc', and 'special' attributes.
    • The Disassembler API from the gdb.disassembler module has been extended to include styling support
    • gdb.parse_and_eval now has a new "global_context" parameter, allowing the request to only examine global symbols.
    • The name argument passed to gdb.unwinder.Unwinder.__init__ must now be of type 'str' otherwise a TypeError will be raised.
    • The gdb.unwinder.Unwinder.enabled attribute can now only accept values of type 'bool'. Changing this attribute will now invalidate GDB's frame-cache.
    • It is now no longer possible to sub-class the gdb.disassembler.DisassemblerResult type.
  • Remote protocol
    • Support for enabling or disabling individual remote target features
  • GDB/MI support
    • New 'no-history' stop reason
    • Support for inferior-specific breakpoints
    • The bkpt tuple, which appears in breakpoint-created notifications, and in the result of the -break-insert command can now include an optional 'inferior' field for both the main breakpoint, and each location, when the breakpoint is inferior-specific.
    • Trying to create a thread-specific breakpoint using a non-existent thread ID now results in an error
    • New "simple-values-ref-types" -list-feature value indicating how the --simple-values option in various commands take reference types into account.
  • Enhanced AArch64 support
    • Initial support for Scalable Matrix Extension (SME) and for Scalable Matrix Extension 2 (SME2)
    • The 'org.gnu.gdb.aarch64.pauth' Pointer Authentication feature is now deprecated in favor of the 'org.gnu.gdb.aarch64.pauth_v2' feature string
  • Enhanced Ada support
    • Support for the Ada 2022 target name symbol ('@')
    • Support for the The Ada 2022 'Enum_Rep and 'Enum_Val attributes
  • Miscellaneous
    • The 'list' command now accepts '.' as an argument, telling GDB to print the location around the point of execution within the current frame
    • New '%V' output format for printf and dprintf commands.
    • The printf command now limits the size of strings fetched from the inferior to the value of the 'max-value-size' setting.
    • Support for extending at configure time the default value of the 'debug-file-directory' GDB parameter via the new --additional-debug-dirs=PATHs configure option.
    • New command "info main"
    • New command "set tui mouse-events [on|off]" (on by default)
    • New command "set always-read-ctf on|off" (off by default)
    • Various new debug and maitenance commands
See the NEWS file for a more complete and detailed list of what this release includes.
Nov 28, 2006: Reversible Debugging

The GDB maintainers are looking for contributors interestedin reversible debugging.

Late breaking information, such as recently added features, can befound in the NEWS file in the gdb source tree. Old announcements are in thenews archive.

Please send FSF & GNU inquiries & questions to There are also other ways tocontact the FSF.

This page is maintained by the GDBdevelopers.

Copyright Free Software Foundation, Inc., 51 Franklin St - FifthFloor, Boston, MA 02110-1301 USA.

Verbatim copying and distribution of this entire article ispermitted in any medium, provided this notice is preserved.

Last modified 2024-05-26.

GDB: The GNU Project Debugger (2024)
Top Articles
Latest Posts
Article information

Author: Velia Krajcik

Last Updated:

Views: 6253

Rating: 4.3 / 5 (74 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Velia Krajcik

Birthday: 1996-07-27

Address: 520 Balistreri Mount, South Armand, OR 60528

Phone: +466880739437

Job: Future Retail Associate

Hobby: Polo, Scouting, Worldbuilding, Cosplaying, Photography, Rowing, Nordic skating

Introduction: My name is Velia Krajcik, I am a handsome, clean, lucky, gleaming, magnificent, proud, glorious person who loves writing and wants to share my knowledge and understanding with you.