What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 9
+*** Changes since GDB 11
+
+* New commands
+
+maint set backtrace-on-fatal-signal on|off
+maint show backtrace-on-fatal-signal
+ This setting is 'on' by default. When 'on' GDB will print a limited
+ backtrace to stderr in the situation where GDB terminates with a
+ fatal signal. This only supported on some platforms where the
+ backtrace and backtrace_symbols_fd functions are available.
+
+set source open on|off
+show source open
+ This setting, which is on by default, controls whether GDB will try
+ to open source code files. Switching this off will stop GDB trying
+ to open and read source code files, which can be useful if the files
+ are located over a slow network connection.
+
+set varsize-limit
+show varsize-limit
+ These are now deprecated aliases for "set max-value-size" and
+ "show max-value-size".
+
+maint set internal-error backtrace on|off
+maint show internal-error backtrace
+maint set internal-warning backtrace on|off
+maint show internal-warning backtrace
+ GDB can now print a backtrace of itself when it encounters either an
+ internal-error, or an internal-warning. This is on by default for
+ internal-error and off by default for internal-warning.
+
+set logging on|off
+ Deprecated and replaced by "set logging enabled on|off".
+
+set logging enabled on|off
+show logging enabled
+ These commands set or show whether logging is enabled or disabled.
+
+* Changed commands
+
+maint packet
+ This command can now print a reply, if the reply includes
+ non-printable characters. Any non-printable characters are printed
+ as escaped hex, e.g. \x?? where '??' is replaces with the value of
+ the non-printable character.
+
+* Python API
+
+ ** New function gdb.add_history(), which takes a gdb.Value object
+ and adds the value it represents to GDB's history list. An
+ integer, the index of the new item in the history list, is
+ returned.
+
+ ** New gdb.events.gdb_exiting event. This event is called with a
+ gdb.GdbExitingEvent object which has the read-only attribute
+ 'exit_code', which contains the value of the GDB exit code. This
+ event is triggered once GDB decides it is going to exit, but
+ before GDB starts to clean up its internal state.
+
+ ** New function gdb.architecture_names(), which returns a list
+ containing all of the possible Architecture.name() values. Each
+ entry is a string.
+
+ ** New function gdb.Architecture.integer_type(), which returns an
+ integer type given a size and a signed-ness.
+
+ ** New gdb.TargetConnection object type that represents a connection
+ (as displayed by the 'info connections' command). A sub-class,
+ gdb.RemoteTargetConnection, is used to represent 'remote' and
+ 'extended-remote' connections.
+
+ ** The gdb.Inferior type now has a 'connection' property which is an
+ instance of gdb.TargetConnection, the connection used by this
+ inferior. This can be None if the inferior has no connection.
+
+ ** New 'gdb.events.connection_removed' event registry, which emits a
+ 'gdb.ConnectionEvent' when a connection is removed from GDB.
+ This event has a 'connection' property, a gdb.TargetConnection
+ object for the connection being removed.
+
+ ** New gdb.connections() function that returns a list of all
+ currently active connections.
+
+ ** New gdb.RemoteTargetConnection.send_packet(PACKET) method. This
+ is equivalent to the existing 'maint packet' CLI command; it
+ allows a user specified packet to be sent to the remote target.
+
+* New features in the GDB remote stub, GDBserver
+
+ ** GDBserver is now supported on OpenRISC GNU/Linux.
+
+* New native configurations
+
+GNU/Linux/OpenRISC or1k*-*-linux*
+
+*** Changes in GDB 11
+
+* The 'set disassembler-options' command now supports specifying options
+ for the ARC target.
+
+* GDB now supports general memory tagging functionality if the underlying
+ architecture supports the proper primitives and hooks. Currently this is
+ enabled only for AArch64 MTE.
+
+ This includes:
+
+ - Additional information when the inferior crashes with a SIGSEGV caused by
+ a memory tag violation.
+
+ - A new modifier 'm' for the "x" command, which displays allocation tags for a
+ particular memory range.
+
+ - Display of memory tag mismatches by "print", for addresses and
+ pointers, if memory tagging is supported by the architecture.
+
+* Building GDB now requires GMP (The GNU Multiple Precision Arithmetic
+ Library).
+
+* MI changes
+
+ ** '-break-insert --qualified' and '-dprintf-insert --qualified'
+
+ The MI -break-insert and -dprintf-insert commands now support a
+ new "--qualified" option that makes GDB interpret a specified
+ function name as a complete fully-qualified name. This is the
+ equivalent of the CLI's "break -qualified" and "dprintf
+ -qualified".
+
+ ** '-break-insert --force-condition' and '-dprintf-insert --force-condition'
+
+ The MI -break-insert and -dprintf-insert commands now support a
+ '--force-condition' flag to forcibly define a condition even when
+ the condition is invalid at all locations of the breakpoint. This
+ is equivalent to the '-force-condition' flag of the CLI's "break"
+ command.
+
+ ** '-break-condition --force'
+
+ The MI -break-condition command now supports a '--force' flag to
+ forcibly define a condition even when the condition is invalid at
+ all locations of the selected breakpoint. This is equivalent to
+ the '-force' flag of the CLI's "cond" command.
+
+ ** '-file-list-exec-source-files [--group-by-objfile]
+ [--basename | --dirname]
+ [--] [REGEXP]'
+
+ The existing -file-list-exec-source-files command now takes an
+ optional REGEXP which is used to filter the source files that are
+ included in the results.
+
+ By default REGEXP is matched against the full filename of the
+ source file. When one of --basename or --dirname is given then
+ REGEXP is only matched against the specified part of the full
+ source filename.
+
+ When the optional --group-by-objfile flag is used the output
+ format is changed, the results are now a list of object files
+ (executable and libraries) with the source files that are
+ associated with each object file.
+
+ The results from -file-list-exec-source-files now include a
+ 'debug-fully-read' field which takes the value 'true' or 'false'.
+ A 'true' value indicates the source file is from a compilation
+ unit that has had its debug information fully read in by GDB, a
+ value of 'false' indicates GDB has only performed a partial scan
+ of the debug information so far.
+
+* GDB now supports core file debugging for x86_64 Cygwin programs.
+
+* 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.
+
+* 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.
+
+ For Ada, this allows support for fixed point types without requiring
+ the use of the GNAT encoding (based on information added to the type's
+ name following a GNAT-specific format).
+
+* GDB will now load and process commands from ~/.config/gdb/gdbearlyinit
+ or ~/.gdbearlyinit if these files are present. These files are
+ processed earlier than any of the other initialization files and
+ can affect parts of GDB's startup that previously had already been
+ completed before the initialization files were read, for example
+ styling of the initial GDB greeting.
+
+* GDB now has two new options "--early-init-command" and
+ "--early-init-eval-command" with corresponding short options "-eix"
+ and "-eiex" that allow options (that would normally appear in a
+ gdbearlyinit file) to be passed on the command line.
+
+* For RISC-V targets, the target feature "org.gnu.gdb.riscv.vector" is
+ now understood by GDB, and can be used to describe the vector
+ registers of a target. The precise requirements of this register
+ feature are documented in the GDB manual.
+
+* For ARM targets, the "org.gnu.gdb.arm.m-profile-mve" feature is now
+ supported by GDB and describes a new VPR register from the ARM MVE
+ (Helium) extension. See the GDB manual for more information.
+
+* TUI improvements
+
+ ** TUI windows now support mouse actions. The mouse wheel scrolls
+ the appropriate window.
+
+ ** Key combinations that do not have a specific action on the
+ focused window are passed to GDB. For example, you now can use
+ Ctrl-Left/Ctrl-Right to move between words in the command window
+ regardless of which window is in focus. Previously you would
+ need to focus on the command window for such key combinations to
+ work.
+
+* New commands
+
+set debug event-loop
+show debug event-loop
+ Control the display of debug output about GDB's event loop.
+
+set print memory-tag-violations
+show print memory-tag-violations
+ Control whether to display additional information about memory tag violations
+ when printing pointers and addresses. Architecture support for memory
+ tagging is required for this option to have an effect.
+
+maintenance flush symbol-cache
+maintenance flush register-cache
+ These new commands are equivalent to the already existing commands
+ 'maintenance flush-symbol-cache' and 'flushregs' respectively.
+
+maintenance flush dcache
+ A new command to flush the dcache.
+
+maintenance info target-sections
+ Print GDB's internal target sections table.
+
+maintenance info jit
+ Print the JIT code objects in the inferior known to GDB.
+
+memory-tag show-logical-tag POINTER
+ Print the logical tag for POINTER.
+memory-tag with-logical-tag POINTER TAG
+ Print POINTER with logical tag TAG.
+memory-tag show-allocation-tag ADDRESS
+ Print the allocation tag for ADDRESS.
+memory-tag set-allocation-tag ADDRESS LENGTH TAGS
+ Set the allocation tag for [ADDRESS, ADDRESS + LENGTH) to TAGS.
+memory-tag check POINTER
+ Validate that POINTER's logical tag matches the allocation tag.
+
+set startup-quietly on|off
+show startup-quietly
+ When 'on', this causes GDB to act as if "-silent" were passed on the
+ command line. This command needs to be added to an early
+ initialization file (e.g. ~/.config/gdb/gdbearlyinit) in order to
+ affect GDB.
+
+set print type hex on|off
+show print type hex
+ When 'on', the 'ptype' command uses hexadecimal notation to print sizes
+ and offsets of struct members. When 'off', decimal notation is used.
+
+set python ignore-environment on|off
+show python ignore-environment
+ When 'on', this causes GDB's builtin Python to ignore any
+ environment variables that would otherwise affect how Python
+ behaves. This command needs to be added to an early initialization
+ file (e.g. ~/.config/gdb/gdbearlyinit) in order to affect GDB.
+
+set python dont-write-bytecode auto|on|off
+show python dont-write-bytecode
+ When 'on', this causes GDB's builtin Python to not write any
+ byte-code (.pyc files) to disk. This command needs to be added to
+ an early initialization file (e.g. ~/.config/gdb/gdbearlyinit) in
+ order to affect GDB. When 'off' byte-code will always be written.
+ When set to 'auto' (the default) Python will check the
+ PYTHONDONTWRITEBYTECODE environment variable.
+
+* Changed commands
+
+break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]
+ [-force-condition] [if CONDITION]
+ This command would previously refuse setting a breakpoint if the
+ CONDITION expression is invalid at a location. It now accepts and
+ defines the breakpoint if there is at least one location at which
+ the CONDITION is valid. The locations for which the CONDITION is
+ invalid, are automatically disabled. If CONDITION is invalid at all
+ of the locations, setting the breakpoint is still rejected. However,
+ the '-force-condition' flag can be used in this case for forcing GDB to
+ define the breakpoint, making all the current locations automatically
+ disabled. This may be useful if the user knows the condition will
+ become meaningful at a future location, e.g. due to a shared library
+ load.
+
+condition [-force] N COND
+ The behavior of this command is changed the same way for the 'break'
+ command as explained above. The '-force' flag can be used to force
+ GDB into defining the condition even when COND is invalid for all the
+ current locations of breakpoint N.
+
+flushregs
+maintenance flush-symbol-cache
+ These commands are deprecated in favor of the new commands
+ 'maintenance flush register-cache' and 'maintenance flush
+ symbol-cache' respectively.
+
+set style version foreground COLOR
+set style version background COLOR
+set style version intensity VALUE
+ Control the styling of GDB's version number text.
+
+inferior [ID]
+ When the ID parameter is omitted, then this command prints information
+ about the current inferior. When the ID parameter is present, the
+ behavior of the command is unchanged and have the inferior ID become
+ the current inferior.
+
+maintenance info sections
+ The ALLOBJ keyword has been replaced with an -all-objects command
+ line flag. It is now possible to filter which sections are printed
+ even when -all-objects is passed.
+
+ptype[/FLAGS] TYPE | EXPRESSION
+ The 'ptype' command has two new flags. When '/x' is set, hexadecimal
+ notation is used when printing sizes and offsets of struct members.
+ When '/d' is set, decimal notation is used when printing sizes and
+ offsets of struct members. Default behavior is given by 'show print
+ type hex'.
+
+info sources
+ The info sources command output has been restructured. The results
+ are now based around a list of objfiles (executable and libraries),
+ and for each objfile the source files that are part of that objfile
+ are listed.
+
+* Removed targets and native configurations
+
+ARM Symbian arm*-*-symbianelf*
+
+* New remote packets
+
+qMemTags
+ Request the remote to send allocation tags for a particular memory range.
+QMemTags
+ Request the remote to store the specified allocation tags to the requested
+ memory range.
+
+* Guile API
+
+ ** Improved support for rvalue reference values:
+ TYPE_CODE_RVALUE_REF is now exported as part of the API and the
+ value-referenced-value procedure now handles rvalue reference
+ values.
+
+ ** New procedures for obtaining value variants:
+ value-reference-value, value-rvalue-reference-value and
+ value-const-value.
+
+ ** Temporary breakpoints can now be created with make-breakpoint and
+ tested for using breakpoint-temporary?.
+
+* Python API
+
+ ** 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.
+
+*** Changes in GDB 10
+
+* There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
+ and "org.gnu.gdb.arc.aux". The old names are still supported but
+ must be considered obsolete. They will be deprecated after some
+ grace period.
+
+* Help and apropos commands will now show the documentation of a
+ command only once, even if that command has one or more aliases.
+ These commands now show the command name, then all of its aliases,
+ and finally the description of the command.
+
+* 'help aliases' now shows only the user defined aliases. GDB predefined
+ aliases are shown together with their aliased command.
* GDB now supports debuginfod, an HTTP server for distributing ELF/DWARF
debugging information as well as source code.
You can get the latest version from https://sourceware.org/elfutils.
+* Multi-target debugging support
+
+ GDB now supports debugging multiple target connections
+ simultaneously. For example, you can now have each inferior
+ connected to different remote servers running in different machines,
+ or have one inferior debugging a local native process, an inferior
+ debugging a core dump, etc.
+
+ This support is experimental and comes with some limitations -- you
+ can only resume multiple targets simultaneously if all targets
+ support non-stop mode, and all remote stubs or servers must support
+ the same set of remote protocol features exactly. See also "info
+ connections" and "add-inferior -no-connection" below, and "maint set
+ target-non-stop" in the user manual.
+
* New features in the GDB remote stub, GDBserver
+ ** GDBserver is now supported on ARC GNU/Linux.
+
** GDBserver is now supported on RISC-V GNU/Linux.
+ ** GDBserver no longer supports these host triplets:
+
+ i[34567]86-*-lynxos*
+ powerpc-*-lynxos*
+ i[34567]86-*-nto*
+ bfin-*-*linux*
+ crisv32-*-linux*
+ cris-*-linux*
+ m32r*-*-linux*
+ tilegx-*-linux*
+ arm*-*-mingw32ce*
+ i[34567]86-*-mingw32ce*
+
* Debugging MS-Windows processes now sets $_exitsignal when the
inferior is terminated by a signal, instead of setting $_exitcode.
set exec-file-mismatch -- Set exec-file-mismatch handling (ask|warn|off).
show exec-file-mismatch -- Show exec-file-mismatch handling (ask|warn|off).
- Set or show the option 'exec-file-mismatch'. When GDB attaches to
- a running process and can determine the name of the executable file
- the process runs, this new option indicates whether to detect mismatch
- between the name of the current executable file loaded by GDB
- and the name of the executable file used to start the process.
- If 'ask', the default, display a warning and ask the user
- whether to load the process executable file; if 'warn', just display
- a warning; if 'off', don't attempt to detect a mismatch.
+ Set or show the option 'exec-file-mismatch'. When GDB attaches to a
+ running process, this new option indicates whether to detect
+ a mismatch between the current executable file loaded by GDB and the
+ executable file used to start the process. If 'ask', the default,
+ display a warning and ask the user whether to load the process
+ executable file; if 'warn', just display a warning; if 'off', don't
+ attempt to detect a mismatch.
tui new-layout NAME WINDOW WEIGHT [WINDOW WEIGHT]...
Define a new TUI layout, specifying its name and the windows that
will be displayed.
+maintenance print xml-tdesc [FILE]
+ Prints the current target description as an XML document. If the
+ optional FILE is provided (which is an XML target description) then
+ the target description is read from FILE into GDB, and then
+ reprinted.
+
+maintenance print core-file-backed-mappings
+ Prints file-backed mappings loaded from a core file's note section.
+ Output is expected to be similar to that of "info proc mappings".
+
+set debug fortran-array-slicing on|off
+show debug fortran-array-slicing
+ Print debugging when taking slices of Fortran arrays.
+
+set fortran repack-array-slices on|off
+show fortran repack-array-slices
+ When taking slices from Fortran arrays and strings, if the slice is
+ non-contiguous within the original value then, when this option is
+ on, the new value will be repacked into a single contiguous value.
+ When this option is off, then the value returned will consist of a
+ descriptor that describes the slice within the memory of the
+ original parent value.
+
+* Changed commands
+
+alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]
+ The alias command can now specify default args for an alias.
+ GDB automatically prepends the alias default args to the argument list
+ provided explicitly by the user.
+ For example, to have a backtrace with full details, you can define
+ an alias 'bt_ALL' as
+ 'alias bt_ALL = backtrace -entry-values both -frame-arg all
+ -past-main -past-entry -full'.
+ Alias default arguments can also use a set of nested 'with' commands,
+ e.g. 'alias pp10 = with print pretty -- with print elem 10 -- print'
+ defines the alias pp10 that will pretty print a maximum of 10 elements
+ of the given expression (if the expression is an array).
+
* New targets
GNU/Linux/RISC-V (gdbserver) riscv*-*-linux*
+BPF bpf-unknown-none
+Z80 z80-unknown-*
* Python API
field of a dynamic type may have None for its "bitpos" attribute
as well.
+ ** Commands written in Python can be in the "TUI" help class by
+ registering with the new constant gdb.COMMAND_TUI.
+
+ ** New method gdb.PendingFrame.architecture () to retrieve the
+ architecture of the pending frame.
+
+ ** New gdb.Architecture.registers method that returns a
+ gdb.RegisterDescriptorIterator object, an iterator that returns
+ gdb.RegisterDescriptor objects. The new RegisterDescriptor is a
+ way to query the registers available for an architecture.
+
+ ** New gdb.Architecture.register_groups method that returns a
+ gdb.RegisterGroupIterator object, an iterator that returns
+ gdb.RegisterGroup objects. The new RegisterGroup is a way to
+ discover the available register groups.
+
+* Guile API
+
+ ** GDB can now be built with GNU Guile 3.0 and 2.2 in addition to 2.0.
+
+ ** Procedures 'memory-port-read-buffer-size',
+ 'set-memory-port-read-buffer-size!', 'memory-port-write-buffer-size',
+ and 'set-memory-port-write-buffer-size!' are deprecated. When
+ using Guile 2.2 and later, users who need to control the size of
+ a memory port's internal buffer can use the 'setvbuf' procedure.
+
*** Changes in GDB 9
* 'thread-exited' event is now available in the annotations interface.
This feature is still in testing, so it is disabled by default. You
can turn it on using 'maint set worker-threads unlimited'.
-* Multi-target debugging support
-
- GDB now supports debugging multiple target connections
- simultaneously. For example, you can now have each inferior
- connected to different remote servers running in different machines,
- or have one inferior debugging a local native process, an inferior
- debugging a core dump, etc.
-
- This support is experimental and comes with some limitations -- you
- can only resume multiple targets simultaneously if all targets
- support non-stop mode, and all remote stubs or servers must support
- the same set of remote protocol features exactly. See also "info
- connections" and "add-inferior -no-connection" below, and "maint set
- target-non-stop" in the user manual.
-
* Python API
** The gdb.Value type has a new method 'format_string' which returns a
set debug compile-cplus-types
show debug compile-cplus-types
Control the display of debug output about type conversion in the
- C++ compile feature. Commands have no effect while compiliong
+ C++ compile feature. Commands have no effect while compiling
for other languages.
set debug skip
Additionally, a file spec and a function spec may now be combined.
maint info line-table REGEXP
- Display the contents of GDB's internal line table data struture.
+ Display the contents of GDB's internal line table data structure.
maint selftest
Run any GDB unit tests that were compiled in.
set ada print-signatures on|off
show ada print-signatures"
Control whether parameter types and return types are displayed in overloads
- selection menus. It is activaled (@code{on}) by default.
+ selection menus. It is activated (@code{on}) by default.
set max-value-size
show max-value-size
Set the requested ring buffer size for branch tracing in BTS format.
Qbtrace:pt
- Enable Intel Procesor Trace-based branch tracing for the current
+ Enable Intel Processor Trace-based branch tracing for the current
process. The remote stub reports support for this packet to GDB's
qSupported query.
* Removed remote protocol undocumented extension
An undocumented extension to the remote protocol's `S' stop reply
- packet that permited the stub to pass a process id was removed.
+ packet that permitted the stub to pass a process id was removed.
Remote servers should use the `T' stop reply packet instead.
* GDB now supports multiple function calling conventions according to the
* Watchpoints can now be set on unreadable memory locations, e.g. addresses
which will be allocated using malloc later in program execution.
-* The qXfer:libraries:read remote procotol packet now allows passing a
+* The qXfer:libraries:read remote protocol packet now allows passing a
list of section offsets.
* On GNU/Linux, GDB can now attach to stopped processes. Several race
* New targets
NetBSD/hppa hppa*-*-netbsd*
-Xtensa GNU/Lunux xtensa*-*-linux*
+Xtensa GNU/Linux xtensa*-*-linux*
* Change in command line behavior -- corefiles vs. process ids.
* New ``start'' command.
-This command runs the program until the begining of the main procedure.
+This command runs the program until the beginning of the main procedure.
* New BSD Kernel Data Access Library (libkvm) interface
* "set prompt-escape-char" command deleted.
The command "set prompt-escape-char" has been deleted. This command,
-and its very obscure effet on GDB's prompt, was never documented,
+and its very obscure effect on GDB's prompt, was never documented,
tested, nor mentioned in the NEWS file.
* OBSOLETE configurations and files
* Major bug fixes
-The crash that occured when debugging Sun Ansi-C compiled binaries is
+The crash that occurred when debugging Sun Ansi-C compiled binaries is
fixed. This was due to mishandling of the extra N_SO stabs output
by the compiler.
Recent versions of gcc have a bug in how they emit debugging information for
C++ methods (when using dbx-style stabs). The file 'gcc.patch' (in this
directory) can be applied to gcc to fix the problem. Alternatively, if you
-can't fix gcc, you can #define GCC_MANGLE_BUG when compling gdb/symtab.c. The
+can't fix gcc, you can #define GCC_MANGLE_BUG when compiling gdb/symtab.c. The
usual symptom is difficulty with setting breakpoints on methods. GDB complains
about the method being non-existent. (We believe that version 2.2.2 of GCC has
this problem.)
* New malloc package
GDB now uses a new memory manager called mmalloc, based on gmalloc.
-Mmalloc is capable of handling mutiple heaps of memory. It is also
+Mmalloc is capable of handling multiple heaps of memory. It is also
capable of saving a heap to a file, and then mapping it back in later.
This can be used to greatly speedup the startup of GDB by using a
pre-parsed symbol table which lives in a mmalloc managed heap. For