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.

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.

What is the GDB tool? ›

GDB's primary function is to help programmers analyze their code during execution or after a crash. GDB provides an interactive environment that allows engineers to monitor the internal state of a program while it's running or after it has terminated unexpectedly.

How to know if GDB is installed? ›

Check if GDB is installed

The which command can be used to test if gdb is available in your environment. It returns the path where gdb is installed as shown below. If it returns nothing, gdb is not in your environment, so continue to the next section.

What is the command to install GDB? ›

In most Linux distributions, the GDB command comes pre-installed. However, if it's not, you can install it in Debian based distributions like Ubuntu, by running the command sudo apt-get install gdb . For distributions like CentOS that use the RPM package manager, you would run the command sudo yum install gdb .

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.

How to install GCC and GDB in Windows? ›

Following are the steps to download and install the MinGW GCC Compiler for windows.
  1. Step 1: Search MinGW C Compiler on the Web. ...
  2. Step 2: Download MinGW. ...
  3. Step 3: Locate the MinGW-get-setup.exe File and Start Installation. ...
  4. Step 4: Specify Installation Preferences. ...
  5. Step 5: Download and Set up MinGW Installation Manager.
Mar 20, 2024

Does Visual Studio have GDB? ›

Visual Studio Code supports the following debuggers for C/C++ depending on the operating system you are using: Linux: GDB. macOS: LLDB or GDB. Windows: the Visual Studio Windows Debugger or GDB (using Cygwin or MinGW)

How do I run a GDB program? ›

Starting your program. Use the run command to start your program under GDB. You must first specify the program name (except on VxWorks) with an argument to GDB (see section Getting In and Out of GDB), or by using the file or exec-file command (see section Commands to specify files).

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.

Is there a GUI for GDB? ›

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.

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 install GCC the GNU compiler collection? ›

Installing GCC Compiler On Ubuntu
  1. Step 1: Open the Terminal. Press Ctrl+Alt+T on your keyboard to open the Ubuntu terminal. ...
  2. Step 2: Update Package Lists. Before we install GCC, let's ensure that our package lists are up to date. ...
  3. Step 3: Install GCC. Now, it's time to install GCC. ...
  4. Step 4: Verify the Installation.
Feb 6, 2024

How to set GDB in debug? ›

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.

Top Articles
Latest Posts
Article information

Author: Kelle Weber

Last Updated:

Views: 5531

Rating: 4.2 / 5 (73 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Kelle Weber

Birthday: 2000-08-05

Address: 6796 Juan Square, Markfort, MN 58988

Phone: +8215934114615

Job: Hospitality Director

Hobby: tabletop games, Foreign language learning, Leather crafting, Horseback riding, Swimming, Knapping, Handball

Introduction: My name is Kelle Weber, I am a magnificent, enchanting, fair, joyous, light, determined, joyous person who loves writing and wants to share my knowledge and understanding with you.