Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
[image of Archer

GDB: The GNU Project Debugger

[bugs] [GDB 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:

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):

GDB version 11.1

Version 11.1 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.


September 13th, 2021: GDB 11.1 Released!

The latest version of GDB, version 11.1, is available for download.

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 download.

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] [download] [home] [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.