GDB: The GNU Project Debugger
GDB: The GNU Project Debugger
bugs
GDB Maintainers
contributing
current git
documentation
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 Mac OS X.
What Languages does GDB Support?
GDB supports the following languages (in alphabetical order):
Ada
Assembly
C++
Fortran
Go
Objective-C
OpenCL
Modula-2
Pascal
Rust
GDB version 11.1
Version
11.1
of GDB, the GNU
Debugger, is now available for
. See the
ANNOUNCEMENT
for details
including changes in this release.
An errata list (
PROBLEMS
) and
documentation
are also available.
News
September 13th, 2021:
GDB 11.1 Released!
The latest version of GDB, version 11.1, is available for
This version of GDB includes the following changes and enhancements:
Support for ARM Symbian (arm*-*-symbianelf*) has been removed.
Building GDB now requires GMP (The GNU Multiple Precision Arithmetic
Library).
New command-line options "--early-init-command" (or "-eix")
and "--early-init-eval-command" (or "-eiex")
GDB/MI Changes:
New --qualified option for the '-break-insert' and '-dprintf-insert'
commands.
New --force-condition option for the '-break-insert' and
'-dprintf-insert' commands.
New --force option for the '-break-condition' command.
The '-file-list-exec-source-files' now accepts an optional regular
expression to filter the source files included in the result.
The results from '-file-list-exec-source-files' now include
a 'debug-fully-read' field to indicate if the corresponding
source's debugging information has been partially read (false)
or has been fully read (true).
TUI Improvements:
Mouse actions are now supported. The mouse wheel scrolls
the appropriate window.
Key combinations that do not have a specific action on the
focused window are now passed to GDB.
Python enhancements:
Inferior objects now contain a read-only 'connection_num' attribute that
gives the connection number as seen in 'info connections' and
'info inferiors'.
New method gdb.Frame.level() which returns the stack level of the
frame object.
New method gdb.PendingFrame.level() which returns the stack level
of the frame object.
When hitting a catchpoint, the Python API will now emit a
gdb.BreakpointEvent rather than a gdb.StopEvent. The
gdb.Breakpoint attached to the event will have type BP_CATCHPOINT.
Python TUI windows can now receive mouse click events. If the
Window object implements the click method, it is called for each
mouse click event in this window.
New setting "python ignore-environment on|off"; if "on", causes
GDB's builtin Python to ignore any environment variable that would
otherwise affect how Python behaves (needs to be set during
"early initialization" (see above).
New setting "python dont-write-bytecode auto|on|off".
Guile API enhancements:
Improved support for rvalue reference values.
New procedures for obtaining value variants:
value-reference-value, value-rvalue-reference-value and
value-const-value.
New "qMemTags" and "QMemTags" remote protocol packets (associated
with Memory Tagging).
GDB will now look for the .gdbinit file in a config directory before
looking for ~/.gdbinit. The file is searched for in the following
locations: $XDG_CONFIG_HOME/gdb/gdbinit, $HOME/.config/gdb/gdbinit,
$HOME/.gdbinit. On Apple hosts the search order is instead:
$HOME/Library/Preferences/gdb/gdbinit, $HOME/.gdbinit.
The "break [...] if CONDITION" command no longer returns an error
when the condition is invalid at one or more locations. Instead,
if the condition is valid at one or more locations, the locations
where the condition is not valid are disabled.
The behavior of the "condition" command is changed to match
the new behavior of the "break" command.
Support for general memory tagging functionality (currently limited
to AArch64 MTE)
Core file debugging now supported for x86_64 Cygwin programs.
New "org.gnu.gdb.riscv.vector" feature for RISC-V targets.
GDB now supports fixed point types which are described in DWARF
as base types with a fixed-point encoding. Additionally, support
for the DW_AT_GNU_numerator and DW_AT_GNU_denominator has also
been added.
Miscellaneous:
New "startup-quietly on|off" setting; when "on", behaves the same
as passing the "-silent" option on the command line.
New "print type hex on|off" setting; when 'on', the 'ptype' command
uses hexadecimal notation to print sizes and offsets of struct
members. When 'off', decimal notation is used.
The "inferior" command, when run without argument, prints
information about the current inferior.
The "ptype" command now supports "/x" and "/d", affecting the base
used to print sizes and offsets.
The output of the "info source" has been restructured.
New "style version foreground | background | intensity" commands
to control the styling of the GDB version number.
Various debug and maintenance commands (mostly useful for
the GDB developers)
See the
NEWS
file for a more complete and detailed list of what this release includes.
July 3rd, 2021:
GDB 11 branch created
The GDB 11 branch (
gdb-11-branch
) has been created.
To check out a copy of the branch use:
git clone --branch gdb-11-branch git://sourceware.org/git/binutils-gdb.git
Apr 25th, 2021:
GDB 10.2 Released!
The latest version of GDB, version 10.2, is available for
This is a minor corrective release over GDB 10.1, fixing the following
issues:
PR remote/26614
(AddressSanitizer: heap-use-after-free of extended_remote_target in remote_async_inferior_event_handler)
PR gdb/26828
(SIGSEGV in follow_die_offset dwarf2/read.c:22950)
PR gdb/26861
(internal-error: void target_mourn_inferior(ptid_t): Assertion `ptid == inferior_ptid' failed. OS: Mac OSX Catalina; Compiler: GCC; Language: C)
PR gdb/26876
(gdb error: internal-error: Unknown CFA rule when debugging the linux kernel with qemu)
PR breakpoints/26881
(infrun.c:6384: internal-error: void process_event_stop_test(execution_control_state*): Assertion `ecs->event_thread->control.exception_resume_breakpoint != NULL' failed)
PR gdb/26901
(Array subscript fails with flexible array member without size)
PR tui/26973
(gdb crashes when not including the status window in a new layout)
PR python/26974
(Wrong Value.format_string docu for static members argument)
PR breakpoints/27009
([s390] GDB branches randomly for BC instruction while displaced stepping)
PR tdep/27015
(ARC: "eret" value is collected from the wrong data in register cache)
PR backtrace/27147
([GNU/Linux, sparc64] GDB is unable to print full stack trace (got "previous frame inner to this frame" errors))
PR rust/27194
(put rust demangler on 10.x branch)
PR threads/27239
(gdb/cp-support.c:1619:(.text+0x5502): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `TLS init function for thread_local_segv_handler')
PR breakpoints/27330
(nextoverthrow.exp FAILs on arm-none-eabi)
PR symtab/27333
([dwarf-5] abort on unhandled DW_TAG_type_unit in process_psymtab_comp_unit)
PR fortran/27341
([dwarf-5] FAIL: gdb.fortran/function-calls.exp: p derived_types_and_module_calls::pass_cart_nd(c_nd))
PR tdep/27369
(ARC: Stepping over atomic instruction sequences loops infinitely)
PR build/27385
(Cannot compile arc.c with gcc-4.8 (error: no matching function for call to 'std::pair...'))
PR gdb/27435
(Attach on solaris segfaults GDB)
PR build/27535
(amd64-linux-siginfo.c fails to compile after updating to glibc-2.33 headers)
PR build/27536
(aarch64-linux-hw-point.c fails to compile after updating to glibc-2.33)
PR symtab/27541
(gdb crashes on "file -readnow")
PR gdb/27750
(local variables have wrong address and values on sparc64)
PR varobj/27757
(-var-list-children coredump)
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
GDB Maintainers
contributing
current git
documentation
irc
links
mailing lists
news
schedule
song
wiki
Please send FSF & GNU inquiries & questions to
gnu@gnu.org
. There are also
other ways to
contact
the FSF.
This page is maintained by
the GDB
developers
Copyright Free Software Foundation, Inc., 51 Franklin St - Fifth
Floor, Boston, MA 02110-1301 USA.
Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.
Last modified 2021-10-08.
US