GDB: The GNU Project Debugger
[bugs]
[maintainers]
[contributing]
[current git]
[documentation]
[download]
[home]
[irc]
[links]
[mailing lists]
[news]
[schedule]
[song]
[wiki]
GDB: The GNU Project Debugger
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 program
was doing at the moment it crashed.
GDB can do four main kinds of things (plus other things in support
of 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 with
correcting 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 most
popular 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 15.2
Version 15.2 of GDB, the GNU
Debugger, is now available for download. See the ANNOUNCEMENT for details
including changes in this release.
An errata list (PROBLEMS) and documentation
are also available.
News
- September 29th, 2024: GDB 15.2 Released!
-
The latest version of GDB, version 15.2, is available for download.
This is a minor corrective release over GDB 15.1, fixing the following
issues:
- PR gdb/31727 (-exec-next fails in mingw (infrun.c:2794: internal-error: resume_1: Assertion `pc_in_thread_step_range (pc, tp)' failed))
- PR c++/31900 (libstdc++-prettyprinters/debug.cc print redirected fails since gdb-14-branchpoint-2123-g4e417d7bb1c)
- PR python/31946 (sys.exit from Python no longer exits the GDB process)
- PR record/31971 (Loading a saved record file asserts if we try to execute the inferior)
- PR gdb/32005 (frv_current_sos doesn't set solib::lm_info)
- PR exp/32015 (GDB crashes while printing large D array)
- PR gdb/32025 (Fatal error when the disassemble command is interrupted with SIGINT)
- PR gdb/32143 ([15 Regression] arch/amd64.c:71: internal-error: amd64_create_target_description: Assertion `!is_x32' failed)
- PR symtab/32158 ([gdb/symtab] enum class enumerator has incorrect parent in cooked index)
- PR symtab/32160 ([gdb/symtab] Parent map: die parent or scope parent?)
See the NEWS file for a more complete and detailed list of what this release includes.
- July 7th, 2024: GDB 15.1 Released!
-
The latest version of GDB, version 15.1, is available for download.
This version of GDB includes the following changes and enhancements:
- Building GDB and GDBserver now requires a C++17 compiler (for instance,
GCC 9 or later).
- Enhanced Python support
- New function gdb.notify_mi(NAME, DATA), that emits custom
GDB/MI async notification.
- New read/write attribute gdb.Value.bytes that contains a bytes
object holding the contents of this value.
- New module gdb.missing_debug that facilitates dealing with
objfiles that are missing any debug information.
- New function gdb.missing_debug.register_handler that can register
an instance of a sub-class of gdb.missing_debug.MissingDebugInfo
as a handler for objfiles that are missing debug information.
- New class gdb.missing_debug.MissingDebugInfo which can be
sub-classed to create handlers for objfiles with missing debug
information.
- Stop events now have a "details" attribute that holds a
dictionary that carries the same information as an MI "*stopped"
event.
- New function gdb.interrupt(), that interrupts GDB as if the user
typed control-c.
- New gdb.InferiorThread.ptid_string attribute. This read-only
attribute contains the string that appears in the 'Target Id'
column of the 'info threads' command output.
- It is no longer possible to create new gdb.Progspace object using
'gdb.Progspace()', this will result in a TypeError. Progspace
objects can still be obtained through calling other API
functions, for example 'gdb.current_progspace()'.
- User defined attributes can be added to a gdb.Inferior object,
these will be stored in the object's new Inferior.__dict__
attribute.
- User defined attributes can be added to a gdb.InferiorThread
object, these will be stored in the object's new
InferiorThread.__dict__ attribute.
- New constants gdb.SYMBOL_TYPE_DOMAIN, gdb.SYMBOL_FUNCTION_DOMAIN,
and gdb.SEARCH_*_DOMAIN
- Debugger Adapter Protocol changes
- GDB now emits the "process" event.
- GDB now supports the "cancel" request.
- The "attach" request now supports specifying the program.
- New command "set debug dap-log-level" controls DAP logging.
- Remote protocol
- New stop reason: clone
- QThreadOptions in qSupported
- New remote packets: QThreadOptions, qIsAddressTagged
- New "set/show remote thread-options-packet" commands
- GDBserver
- The --remote-debug and --event-loop-debug command line options
have been removed.
- The --debug command line option now takes an optional comma
separated list of components to emit debug for. The currently
supported components are: all, threads, event-loop, and remote.
If no components are given then threads is assumed.
- The 'monitor set remote-debug' and 'monitor set event-loop-debug'
command have been removed.
- The 'monitor set debug 0|1' command has been extended to take a
component name, e.g.: 'monitor set debug COMPONENT off|on'.
Possible component names are: all, threads, event-loop, and
remote.
- Deprecated or removed
- The MPX commands "show/set mpx bound" have been deprecated, as Intel
listed MPX as removed in 2019.
- Miscellaneous
- Guile API: New constants SYMBOL_TYPE_DOMAIN, SYMBOL_FUNCTION_DOMAIN,
and SEARCH_*_DOMAIN
- New "set/show direct-call-timeout" commands.
- New "set/show indirect-call-timeout" commands.
- New "set/show unwind-on-timeout on|off" commands.
- New "set/show unwind-on-signal on|off" commands, renaming the old
"set/show unwindonsignal" commands. The old commands are maintained
as an alias.
- The "gcore" and "generate-core-file" commands now generates sparse
core files, on systems that support it.
- The "maintenance info line-table" command now includes a new
EPILOGUE-BEGIN column indicating the start of the function's epilogue.
- Simultaneous use of the 'r' and 'b' flags in the "disassemble" command
now triggers an error.
See the NEWS file for a more complete and detailed list of what this release includes.
- 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 https://sourceware.org/git/binutils-gdb.git
- 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 following
issues:
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 interested
in reversible debugging.
Late breaking information, such as recently added features, can be
found in the NEWS file in the gdb source tree. Old announcements are in the
news archive.
[bugs]
[maintainers]
[contributing]
[current git]
[documentation]
[download]
[home]
[irc]
[links]
[mailing lists]
[news]
[schedule]
[song]
[wiki]