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.
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.1
Version 15.1 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.
News
- 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.
- 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 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)
- Nov 28, 2006: Reversible Debugging
The GDB maintainers are looking for contributors interestedin reversible debugging.
Please send FSF & GNU inquiries & questions to gnu@gnu.org. 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-07-07.