What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 9
+*** Changes since GDB 10
+
+* 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".
+
+* 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).
+
+* New commands
+
+set debug event-loop
+show debug event-loop
+ Control the display of debug output about GDB's event loop.
+
+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.
+
+* 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.
+
+* Removed targets and native configurations
+
+ARM Symbian arm*-*-symbianelf*
+
+*** 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
* Python API
** gdb.register_window_type can be used to implement new TUI windows
in Python.
+ ** Dynamic types can now be queried. gdb.Type has a new attribute,
+ "dynamic", and gdb.Type.sizeof can be None for a dynamic type. A
+ 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