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)


How to install GDB the GNU Project debugger? ›

Follow below mentioned steps to compile GDB from scratch and install it.
  1. Step-1: Download source code. You can download source code of all release from ...
  2. Step-2: Extract it. $ tar -xvzf gdb-7.11.tar.gz.
  3. Step-3: Configure and Compile it. $ cd gdb-7.11. ...
  4. Step-4: Install GDB.

Is GDB still used? ›

GDB, short for GNU Debugger, is a powerful and widely-used tool for debugging software. It is a command-line utility that allows programmers to interact with a program being debugged and analyze its behavior. GDB is commonly used for debugging C and C++ programs, but it can also be used with other languages.

How to do debugging using GDB? ›

Debugging a program that produces a core dump
  1. Compile the program using the following command. g++ testit.c �g �o testit.
  2. Run it normally, you should get the following result: ...
  3. The core dump generates a file called corewhich can be used for debugging. ...
  4. As we can see from the output above, the core dump was produced.

Is there GDB for Windows? ›

It can be installed to work on Linux, macOS (via Mac Ports), and Windows. Once installed, users can go to the command prompt and type “gdb.” This will tell the host operating system that it can produce commands.

How to know if GDB is installed? ›

The gdb --version command displays the version of GDB installed on your system. If GDB is installed correctly, you will see the version information.

What is the command to install GDB? ›

Installing GDB

In a Terminal window, run the command brew install gdb , and wait for it to complete. (As usual, it may ask for your password.) Now, we need to code-sign the GDB executable, so it will be allowed to control other processes, as necessary for a debugger.

What is GDB good for? ›

Gdb is a debugger for C (and C++). It allows you to do things like run the program up to a certain point then stop and print out the values of certain variables at that point, or step through the program one line at a time and print out the values of each variable after executing each line.

Can GDB run Python? ›

It is also possible to execute a Python script from the GDB interpreter: source script-name. The script name must end with ' . py ' and GDB must be configured to recognize the script language based on filename extension using the script-extension setting.

Does GDB have a GUI? ›

gdbgui is a browser-based frontend to gdb , the gnu debugger. You can add breakpoints, view stack traces, and more in C, C++, Go, and Rust! It's perfect for beginners and experts. Simply run gdbgui from the terminal to start the gdbgui server, and a new tab will open in your browser.

What is the use of GNU debugger? ›

GDB stands for the “Gnu DeBugger.” This is a powerful source-level debugging package that lets you see what is going on inside your program. You can step through the code, set breakpoints, examine and change variables, and so on.

What languages can GDB debug? ›

gdb supports C, C++, D, Objective-C, Fortran, Java, OpenCL C, Pascal, assembly, Modula-2, and Ada. Some gdb features may be used in expressions regardless of the language you use: the gdb @ and :: operators, and the ` {type}addr ' construct (see Expressions) can be used with the constructs of any supported language.

What is a GDB? ›

GDB stands for GNU Project Debugger and is a powerful debugging tool for C (along with other languages like C++).

Is Visual GDB free? ›

You can download a free fully functional trial of VisualGDB. The trial will expire in 30 days after the first run.

Is GDB still relevant? ›

Users find GDB to be a valuable tool for debugging C and C++ files. They appreciate its capabilities to check variable values, examine memory content, and debug without relying on printf statements.

Is GDB a developer tool? ›

The GNU Debugger, commonly abbreviated as GDB, is a command line tool that can be used to debug programs written in various programming languages. It allows you to inspect memory within the code being debugged, control the execution state of the code, detect the execution of particular sections of code, and much more.

How to install gcc and GDB in Windows? ›

  1. Step 1: Download and Install MSYS2. Begin by downloading the MSYS2 installer from the official website. ...
  2. Step 2: Update the System and Install Base Packages. ...
  3. Step 3: Install GCC for C and C++ ...
  4. Step 4: Install GDB for C and C++ (Optional) ...
  5. Step 5: Verify Installations on MSYS2. ...
  6. Step 6: Set the Path Environment Variable.
Nov 22, 2023

How to install GDB debugger on Mac? ›

  1. To install gdb, run the following command in macOS terminal (Applications->Utilities->Terminal) sudo port install gdb Copy.
  2. To see what files were installed by gdb, run: port contents gdb Copy.
  3. To later upgrade gdb, run: sudo port selfupdate && sudo port upgrade gdb Copy.

How to use GDB debugger with gcc? ›

Basic Usage

All program to be debugged in gdb must be compiled by gcc with the option "-g" turning on. Continue with the "garbage" example, if we want to debug the program "garbage", we can simply start gdb by: gdb ./garbage.

How do I add GDB to VS code? ›

Using the debugger
  1. Install gdb on your system.
  2. Install the Beyond Debug extension in VS Code.
  3. Open your project.
  4. Switch to the debug viewlet and press the gear dropdown.
  5. Select the debug environment "GDB(Beyond)".
  6. Press the green 'play' button to start debugging.
May 30, 2023

Top Articles
Latest Posts
Article information

Author: Maia Crooks Jr

Last Updated:

Views: 5391

Rating: 4.2 / 5 (43 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Maia Crooks Jr

Birthday: 1997-09-21

Address: 93119 Joseph Street, Peggyfurt, NC 11582

Phone: +2983088926881

Job: Principal Design Liaison

Hobby: Web surfing, Skiing, role-playing games, Sketching, Polo, Sewing, Genealogy

Introduction: My name is Maia Crooks Jr, I am a homely, joyous, shiny, successful, hilarious, thoughtful, joyous person who loves writing and wants to share my knowledge and understanding with you.