blob: 1e474eca90af02106828f9bca01bfd181ccd7e29 [file] [log] [blame]
What has changed in GDB?
(Organized release by release)
*** Changes since GDB 10
* 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
* 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
** '-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"
** '-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.
* 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
* 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.
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
* Changed commands
[-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
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.
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.
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
Request the remote to send allocation tags for a particular memory range.
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
** New procedures for obtaining value variants:
value-reference-value, value-rvalue-reference-value and
* 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.
When built with debuginfod, GDB can automatically query debuginfod
servers for the separate debug files and source code of the executable
being debugged.
To build GDB with debuginfod, pass --with-debuginfod to configure (this
requires libdebuginfod, the debuginfod client library).
debuginfod is distributed with elfutils, starting with version 0.178.
You can get the latest version from
* 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:
* Debugging MS-Windows processes now sets $_exitsignal when the
inferior is terminated by a signal, instead of setting $_exitcode.
* Multithreaded symbol loading has now been enabled by default on systems
that support it (see entry for GDB 9, below), providing faster
performance for programs with many symbols.
* The $_siginfo convenience variable now also works on Windows targets,
and will display the EXCEPTION_RECORD of the last handled exception.
* TUI windows can now be arranged horizontally.
* The command history filename can now be set to the empty string
either using 'set history filename' or by setting 'GDBHISTFILE=' in
the environment. The effect of setting this filename to the empty
string is that GDB will not try to load any previous command
* On Windows targets, it is now possible to debug 32-bit programs with a
64-bit GDB.
* New commands
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, 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.
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
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.
* New built-in convenience variables $_gdb_major and $_gdb_minor
provide the GDB version. They are handy for conditionally using
features available only in or since specific GDB versions, in
scripts that should work error-free with many different versions,
such as in system-wide init files.
* New built-in convenience functions $_gdb_setting, $_gdb_setting_str,
$_gdb_maint_setting and $_gdb_maint_setting_str provide access to values
of the GDB settings and the GDB maintenance settings. They are handy
for changing the logic of user defined commands depending on the
current GDB settings.
* GDB now supports Thread Local Storage (TLS) variables on several
FreeBSD architectures (amd64, i386, powerpc, riscv). Other
architectures require kernel changes. TLS is not yet supported for
amd64 and i386 process core dumps.
* Support for Pointer Authentication (PAC) on AArch64 Linux. Return
addresses that required unmasking are shown in the backtrace with the
postfix [PAC].
* Two new convenience functions $_cimag and $_creal that extract the
imaginary and real parts respectively from complex numbers.
* New built-in convenience variables $_shell_exitcode and $_shell_exitsignal
provide the exitcode or exit status of the shell commands launched by
GDB commands such as "shell", "pipe" and "make".
* The command define-prefix can now define user defined prefix commands.
User defined commands can now be defined using these user defined prefix
* Command names can now use the . character.
* The RX port now supports XML target descriptions.
* GDB now shows the Ada task names at more places, e.g. in task switching
* GDB can now be compiled with Python 3 on Windows.
* New convenience variable $_ada_exception holds the address of the
Ada exception being thrown. This is set by Ada-related catchpoints.
* GDB can now place breakpoints on nested functions and subroutines in
Fortran code. The '::' operator can be used between parent and
child scopes when placing breakpoints, for example:
(gdb) break outer_function::inner_function
The 'outer_function::' prefix is only needed if 'inner_function' is
not visible in the current scope.
* In addition to the system-wide gdbinit file, if configured with
--with-system-gdbinit-dir, GDB will now also load files in that directory
as system gdbinit files, unless the -nx or -n flag is provided. Files
with extensions .gdb, .py and .scm are supported as long as GDB was
compiled with support for that language.
* GDB now supports multithreaded symbol loading for higher performance.
This feature is still in testing, so it is disabled by default. You
can turn it on using 'maint set worker-threads unlimited'.
* Python API
** The gdb.Value type has a new method 'format_string' which returns a
string representing the value. The formatting is controlled by the
optional keyword arguments: 'raw', 'pretty_arrays', 'pretty_structs',
'array_indexes', 'symbols', 'unions', 'deref_refs', 'actual_objects',
'static_members', 'max_elements', 'repeat_threshold', and 'format'.
** gdb.Type has a new property 'objfile' which returns the objfile the
type was defined in.
** The frame information printed by the python frame filtering code
is now consistent with what the 'backtrace' command prints when
there are no filters, or when the 'backtrace' '-no-filters' option
is given.
** The new function gdb.lookup_static_symbol can be used to look up
symbols with static linkage.
** The new function gdb.lookup_static_symbols can be used to look up
all static symbols with static linkage.
** gdb.Objfile has new methods 'lookup_global_symbol' and
'lookup_static_symbol' to lookup a symbol from this objfile only.
** gdb.Block now supports the dictionary syntax for accessing symbols in
this block (e.g. block['local_variable']).
* New commands
Executes COMMAND and sends its output to SHELL_COMMAND.
With no COMMAND, repeat the last executed command
and send its output to SHELL_COMMAND.
define-prefix COMMAND
Define or mark a command as a user-defined prefix command.
Temporarily set SETTING, run COMMAND, and restore SETTING.
Usage: with SETTING -- COMMAND
With no COMMAND, repeats the last executed command.
SETTING is any GDB setting you can change with the "set"
subcommands. For example, 'with language c -- print someobj'
temporarily switches to the C language in order to print someobj.
Settings can be combined: 'w lang c -- w print elements unlimited --
usercmd' switches to the C language and runs usercmd with no limit
of array elements to print.
maint with SETTING [VALUE] [-- COMMAND]
Like "with", but works with "maintenance set" settings.
set may-call-functions [on|off]
show may-call-functions
This controls whether GDB will attempt to call functions in
the program, such as with expressions in the print command. It
defaults to on. Calling functions in the program being debugged
can have undesired side effects. It is now possible to forbid
such function calls. If function calls are forbidden, GDB will throw
an error when a command (such as print expression) calls a function
in the program.
set print finish [on|off]
show print finish
This controls whether the `finish' command will display the value
that is returned by the current function. When `off', the value is
still entered into the value history, but it is not printed. The
default is `on'.
set print max-depth
show print max-depth
Allows deeply nested structures to be simplified when printing by
replacing deeply nested parts (beyond the max-depth) with ellipses.
The default max-depth is 20, but this can be set to unlimited to get
the old behavior back.
set print raw-values [on|off]
show print raw-values
By default, GDB applies the enabled pretty printers when printing a
value. This allows to ignore the enabled pretty printers for a series
of commands. The default is 'off'.
set logging debugredirect [on|off]
By default, GDB debug output will go to both the terminal and the logfile.
Set if you want debug output to go only to the log file.
set style title foreground COLOR
set style title background COLOR
set style title intensity VALUE
Control the styling of titles.
set style highlight foreground COLOR
set style highlight background COLOR
set style highlight intensity VALUE
Control the styling of highlightings.
maint set worker-threads
maint show worker-threads
Control the number of worker threads that can be used by GDB. The
default is 0. "unlimited" lets GDB choose a number that is
reasonable. Currently worker threads are only used when demangling
the names of linker symbols.
set style tui-border foreground COLOR
set style tui-border background COLOR
Control the styling of TUI borders.
set style tui-active-border foreground COLOR
set style tui-active-border background COLOR
Control the styling of the active TUI border.
maint set test-settings KIND
maint show test-settings KIND
A set of commands used by the testsuite for exercising the settings
maint set tui-resize-message [on|off]
maint show tui-resize-message
Control whether GDB prints a message each time the terminal is
resized when in TUI mode. This is primarily useful for testing the
set print frame-info [short-location|location|location-and-address
show print frame-info
This controls what frame information is printed by the commands printing
a frame. This setting will e.g. influence the behaviour of 'backtrace',
'frame', 'stepi'. The python frame filtering also respect this setting.
The 'backtrace' '-frame-info' option can override this global setting.
set tui compact-source
show tui compact-source
Enable the "compact" display mode for the TUI source window. The
compact display uses only as much space as is needed for the line
numbers in the current file, and only a single space to separate the
line numbers from the source.
info modules [-q] [REGEXP]
Return a list of Fortran modules matching REGEXP, or all modules if
no REGEXP is given.
info module functions [-q] [-m MODULE_REGEXP] [-t TYPE_REGEXP] [REGEXP]
Return a list of functions within all modules, grouped by module.
The list of functions can be restricted with the optional regular
expressions. MODULE_REGEXP matches against the module name,
TYPE_REGEXP matches against the function type signature, and REGEXP
matches against the function name.
info module variables [-q] [-m MODULE_REGEXP] [-t TYPE_REGEXP] [REGEXP]
Return a list of variables within all modules, grouped by module.
The list of variables can be restricted with the optional regular
expressions. MODULE_REGEXP matches against the module name,
TYPE_REGEXP matches against the variable type, and REGEXP matches
against the variable name.
set debug remote-packet-max-chars
show debug remote-packet-max-chars
Controls the number of characters to output in a remote packet when using
"set debug remote".
The default is 512 bytes.
info connections
Lists the target connections currently in use.
* Changed commands
The "help" command uses the title style to enhance the
readibility of its output by styling the classes and
command names.
apropos [-v] REGEXP
Similarly to "help", the "apropos" command also uses the
title style for the command names. "apropos" accepts now
a flag "-v" (verbose) to show the full documentation
of matching commands and to use the highlight style to mark
the documentation parts matching REGEXP.
The GDB printf and eval commands can now print C-style and Ada-style
string convenience variables without calling functions in the program.
This allows to do formatted printing of strings without having
a running inferior, or when debugging a core dump.
info sources [-dirname | -basename] [--] [REGEXP]
This command has now optional arguments to only print the files
whose names match REGEXP. The arguments -dirname and -basename
allow to restrict matching respectively to the dirname and basename
parts of the files.
show style
The "show style" and its subcommands are now styling
a style name in their output using its own style, to help
the user visualize the different styles.
set print frame-arguments
The new value 'presence' indicates to only indicate the presence of
arguments using ..., instead of printing argument names and values.
set print raw-frame-arguments
show print raw-frame-arguments
These commands replace the similarly-named "set/show print raw
frame-arguments" commands (now with a dash instead of a space). The
old commands are now deprecated and may be removed in a future
add-inferior [-no-connection]
The add-inferior command now supports a "-no-connection" flag that
makes the new inferior start with no target connection associated.
By default, the new inferior inherits the target connection of the
current inferior. See also "info connections".
info inferior
This command's output now includes a new "Connection" column
indicating which target connection an inferior is bound to. See
"info connections" above.
maint test-options require-delimiter
maint test-options unknown-is-error
maint test-options unknown-is-operand
maint show test-options-completion-result
Commands used by the testsuite to validate the command options
focus, winheight, +, -, >, <
These commands are now case-sensitive.
* New command options, command completion
GDB now has a standard infrastructure to support dash-style command
options ('-OPT'). One benefit is that commands that use it can
easily support completion of command line arguments. Try "CMD
-[TAB]" or "help CMD" to find options supported by a command. Over
time, we intend to migrate most commands to this infrastructure. A
number of commands got support for new command options in this
** The "print" and "compile print" commands now support a number of
options that allow overriding relevant global print settings as
set by "set print" subcommands:
-address [on|off]
-array [on|off]
-array-indexes [on|off]
-elements NUMBER|unlimited
-null-stop [on|off]
-object [on|off]
-pretty [on|off]
-raw-values [on|off]
-repeats NUMBER|unlimited
-static-members [on|off]
-symbol [on|off]
-union [on|off]
-vtbl [on|off]
Note that because the "print"/"compile print" commands accept
arbitrary expressions which may look like options (including
abbreviations), if you specify any command option, then you must
use a double dash ("--") to mark the end of argument processing.
** The "backtrace" command now supports a number of options that
allow overriding relevant global print settings as set by "set
backtrace" and "set print" subcommands:
-entry-values no|only|preferred|if-needed|both|compact|default
-frame-arguments all|scalars|none
-raw-frame-arguments [on|off]
-frame-info auto|source-line|location|source-and-location
-past-main [on|off]
-past-entry [on|off]
In addition, the full/no-filters/hide qualifiers are now also
exposed as command options too:
** The "frame apply", "tfaas" and "faas" commands similarly now
support the following options:
-past-main [on|off]
-past-entry [on|off]
** The new "info sources" options -dirname and -basename options
are using the standard '-OPT' infrastructure.
All options above can also be abbreviated. The argument of boolean
(on/off) options can be 0/1 too, and also the argument is assumed
"on" if omitted. This allows writing compact command invocations,
like for example:
(gdb) p -ra -p -o 0 -- *myptr
The above is equivalent to:
(gdb) print -raw-values -pretty -object off -- *myptr
** The "info types" command now supports the '-q' flag to disable
printing of some header information in a similar fashion to "info
variables" and "info functions".
** The "info variables", "info functions", and "whereis" commands
now take a '-n' flag that excludes non-debug symbols (symbols
from the symbol table, not from the debug info such as DWARF)
from the results.
* Completion improvements
** GDB can now complete the options of the "thread apply all" and
"taas" commands, and their "-ascending" option can now be
** GDB can now complete the options of the "info threads", "info
functions", "info variables", "info locals", and "info args"
** GDB can now complete the options of the "compile file" and
"compile code" commands. The "compile file" command now
completes on filenames.
** GDB can now complete the backtrace command's
"full/no-filters/hide" qualifiers.
* In settings, you can now abbreviate "unlimited".
E.g., "set print elements u" is now equivalent to "set print
elements unlimited".
* New MI commands
This lists all the possible completions for the rest of the line, if it
were to be given as a command itself. This is intended for use by MI
frontends in cases when separate CLI and MI channels cannot be used.
-catch-throw, -catch-rethrow, and -catch-catch
These can be used to catch C++ exceptions in a similar fashion to
the CLI commands 'catch throw', 'catch rethrow', and 'catch catch'.
-symbol-info-functions, -symbol-info-types, and -symbol-info-variables
These commands are the MI equivalent of the CLI commands 'info
functions', 'info types', and 'info variables' respectively.
-symbol-info-modules, this is the MI equivalent of the CLI 'info
modules' command.
-symbol-info-module-functions and -symbol-info-module-variables.
These commands are the MI equivalent of the CLI commands 'info
module functions' and 'info module variables'.
* Other MI changes
** The default version of the MI interpreter is now 3 (-i=mi3).
** The output of information about multi-location breakpoints (which is
syntactically incorrect in MI 2) has changed in MI 3. This affects
the following commands and events:
- -break-insert
- -break-info
- =breakpoint-created
- =breakpoint-modified
The -fix-multi-location-breakpoint-output command can be used to enable
this behavior with previous MI versions.
** Backtraces and frames include a new optional field addr_flags which is
given after the addr field. On AArch64 this contains PAC if the address
has been masked in the frame. On all other targets the field is not
* Testsuite
The testsuite now creates the files gdb.cmd (containing the arguments
used to launch GDB) and (containing all the commands sent to
GDB) in the output directory for each test script. Multiple invocations
are appended with .1, .2, .3 etc.
* Building GDB and GDBserver now requires GNU make >= 3.82.
Using another implementation of the make program or an earlier version of
GNU make to build GDB or GDBserver is not supported.
* Building GDB now requires GNU readline >= 7.0.
GDB now bundles GNU readline 8.0, but if you choose to use
--with-system-readline, only readline >= 7.0 can be used.
* The TUI SingleKey keymap is now named "SingleKey". This can be used
from .inputrc to bind keys in this keymap. This feature is only
available when gdb is built against GNU readline 8.0 or later.
* Removed targets and native configurations
GDB no longer supports debugging the Cell Broadband Engine. This includes
both debugging standalone Cell/B.E. SPU applications and integrated debugging
of Cell/B.E. applications that use both the PPU and SPU architectures.
* New Simulators
TI PRU pru-*-elf
* Removed targets and native configurations
Solaris 10 i?86-*-solaris2.10, x86_64-*-solaris2.10,
*** Changes in GDB 8.3
* GDB and GDBserver now support access to additional registers on
PowerPC GNU/Linux targets: PPR, DSCR, TAR, EBB/PMU registers, and
HTM registers.
* GDB now has experimental support for the compilation and injection of
C++ source code into the inferior. This beta release does not include
support for several language features, such as templates, constructors,
and operators.
This feature requires GCC 7.1 or higher built with
(the C++ plug-in).
* GDB and GDBserver now support IPv6 connections. IPv6 addresses
can be passed using the '[ADDRESS]:PORT' notation, or the regular
'ADDRESS:PORT' method.
* DWARF index cache: GDB can now automatically save indices of DWARF
symbols on disk to speed up further loading of the same binaries.
* Ada task switching is now supported on aarch64-elf targets when
debugging a program using the Ravenscar Profile. For more information,
see the "Tasking Support when using the Ravenscar Profile" section
in the GDB user manual.
* GDB in batch mode now exits with status 1 if the last command to be
executed failed.
* The RISC-V target now supports target descriptions.
* System call catchpoints now support system call aliases on FreeBSD.
When the ABI of a system call changes in FreeBSD, this is
implemented by leaving a compatibility system call using the old ABI
at the existing number and allocating a new system call number for
the new ABI. For example, FreeBSD 12 altered the layout of 'struct
kevent' used by the 'kevent' system call. As a result, FreeBSD 12
kernels ship with both 'kevent' and 'freebsd11_kevent' system calls.
The 'freebsd11_kevent' system call is assigned an alias of 'kevent'
so that a system call catchpoint for the 'kevent' system call will
catch invocations of both the 'kevent' and 'freebsd11_kevent'
binaries. This ensures that 'kevent' system calls are caught for
binaries using either the old or new ABIs.
* Terminal styling is now available for the CLI and the TUI. GNU
Source Highlight can additionally be used to provide styling of
source code snippets. See the "set style" commands, below, for more
* Removed support for old demangling styles arm, edg, gnu, hp and
* New commands
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 compiling
for other languages.
set debug skip
show debug skip
Control whether debug output about files/functions skipping is
frame apply [all | COUNT | -COUNT | level LEVEL...] [FLAG]... COMMAND
Apply a command to some frames.
FLAG arguments allow to control what output to produce and how to handle
errors raised when applying COMMAND to a frame.
Apply a command to all threads (ignoring errors and empty output).
Shortcut for 'thread apply all -s COMMAND'.
Apply a command to all frames (ignoring errors and empty output).
Shortcut for 'frame apply all -s COMMAND'.
Apply a command to all frames of all threads (ignoring errors and empty
Shortcut for 'thread apply all -s frame apply all -s COMMAND'.
maint set dwarf unwinders (on|off)
maint show dwarf unwinders
Control whether DWARF unwinders can be used.
info proc files
Display a list of open files for a process.
* Changed commands
Changes to the "frame", "select-frame", and "info frame" CLI commands.
These commands all now take a frame specification which
is either a frame level, or one of the keywords 'level', 'address',
'function', or 'view' followed by a parameter. Selecting a frame by
address, or viewing a frame outside the current backtrace now
requires the use of a keyword. Selecting a frame by level is
unchanged. The MI comment "-stack-select-frame" is unchanged.
target remote FILENAME
target extended-remote FILENAME
If FILENAME is a Unix domain socket, GDB will attempt to connect
to this socket instead of opening FILENAME as a character device.
info args [-q] [-t TYPEREGEXP] [NAMEREGEXP]
info functions [-q] [-t TYPEREGEXP] [NAMEREGEXP]
info locals [-q] [-t TYPEREGEXP] [NAMEREGEXP]
info variables [-q] [-t TYPEREGEXP] [NAMEREGEXP]
These commands can now print only the searched entities
matching the provided regexp(s), giving a condition
on the entity names or entity types. The flag -q disables
printing headers or informations messages.
info functions
info types
info variables
These commands now determine the syntax for the shown entities
according to the language chosen by `set language'. In particular,
`set language auto' means to automatically choose the language of
the shown entities.
thread apply [all | COUNT | -COUNT] [FLAG]... COMMAND
The 'thread apply' command accepts new FLAG arguments.
FLAG arguments allow to control what output to produce and how to handle
errors raised when applying COMMAND to a thread.
set tui tab-width NCHARS
show tui tab-width NCHARS
"set tui tab-width" replaces the "tabset" command, which has been deprecated.
set style enabled [on|off]
show style enabled
Enable or disable terminal styling. Styling is enabled by default
on most hosts, but disabled by default when in batch mode.
set style sources [on|off]
show style sources
Enable or disable source code styling. Source code styling is
enabled by default, but only takes effect if styling in general is
enabled, and if GDB was linked with GNU Source Highlight.
set style filename foreground COLOR
set style filename background COLOR
set style filename intensity VALUE
Control the styling of file names.
set style function foreground COLOR
set style function background COLOR
set style function intensity VALUE
Control the styling of function names.
set style variable foreground COLOR
set style variable background COLOR
set style variable intensity VALUE
Control the styling of variable names.
set style address foreground COLOR
set style address background COLOR
set style address intensity VALUE
Control the styling of addresses.
* MI changes
** The '-data-disassemble' MI command now accepts an '-a' option to
disassemble the whole function surrounding the given program
counter value or function name. Support for this feature can be
verified by using the "-list-features" command, which should
contain "data-disassemble-a-option".
** Command responses and notifications that include a frame now include
the frame's architecture in a new "arch" attribute.
* New native configurations
GNU/Linux/RISC-V riscv*-*-linux*
FreeBSD/riscv riscv*-*-freebsd*
* New targets
GNU/Linux/RISC-V riscv*-*-linux*
CSKY ELF csky*-*-elf
CSKY GNU/LINUX csky*-*-linux
FreeBSD/riscv riscv*-*-freebsd*
NXP S12Z s12z-*-elf
GNU/Linux/OpenRISC or1k*-*-linux*
* Removed targets
GDB no longer supports native debugging on versions of MS-Windows
before Windows XP.
* Python API
** GDB no longer supports Python versions less than 2.6.
** The gdb.Inferior type has a new 'progspace' property, which is the program
space associated to that inferior.
** The gdb.Progspace type has a new 'objfiles' method, which returns the list
of objfiles associated to that program space.
gdb.SYMBOL_COMMON_BLOCK_DOMAIN were added to reflect changes to
the gdb core.
gdb.SYMBOL_TYPES_DOMAIN are now deprecated. These were never
correct and did not work properly.
** The gdb.Value type has a new constructor, which is used to construct a
gdb.Value from a Python buffer object and a gdb.Type.
* Configure changes
Enable or disable the undefined behavior sanitizer. This is
disabled by default, but passing --enable-ubsan=yes or
--enable-ubsan=auto to configure will enable it. Enabling this can
cause a performance penalty. The undefined behavior sanitizer was
first introduced in GCC 4.9.
*** Changes in GDB 8.2
* The 'set disassembler-options' command now supports specifying options
for the MIPS target.
* The 'symbol-file' command now accepts an '-o' option to add a relative
offset to all sections.
* Similarly, the 'add-symbol-file' command also accepts an '-o' option to add
a relative offset to all sections, but it allows to override the load
address of individual sections using '-s'.
* The 'add-symbol-file' command no longer requires the second argument
(address of the text section).
* The endianness used with the 'set endian auto' mode in the absence of
an executable selected for debugging is now the last endianness chosen
either by one of the 'set endian big' and 'set endian little' commands
or by inferring from the last executable used, rather than the startup
* The pager now allows a "c" response, meaning to disable the pager
for the rest of the current command.
* The commands 'info variables/functions/types' now show the source line
numbers of symbol definitions when available.
* 'info proc' now works on running processes on FreeBSD systems and core
files created on FreeBSD systems.
* C expressions can now use _Alignof, and C++ expressions can now use
* Support for SVE on AArch64 Linux. Note that GDB does not detect changes to
the vector length while the process is running.
* New commands
set debug fbsd-nat
show debug fbsd-nat
Control display of debugging info regarding the FreeBSD native target.
set|show varsize-limit
This new setting allows the user to control the maximum size of Ada
objects being printed when those objects have a variable type,
instead of that maximum size being hardcoded to 65536 bytes.
set|show record btrace cpu
Controls the processor to be used for enabling errata workarounds for
branch trace decode.
maint check libthread-db
Run integrity checks on the current inferior's thread debugging
maint set check-libthread-db (on|off)
maint show check-libthread-db
Control whether to run integrity checks on inferior specific thread
debugging libraries as they are loaded. The default is not to
perform such checks.
* Python API
** Type alignment is now exposed via the "align" attribute of a gdb.Type.
** The commands attached to a breakpoint can be set by assigning to
the breakpoint's "commands" field.
** gdb.execute can now execute multi-line gdb commands.
** The new functions gdb.convenience_variable and
gdb.set_convenience_variable can be used to get and set the value
of convenience variables.
** A gdb.Parameter will no longer print the "set" help text on an
ordinary "set"; instead by default a "set" will be silent unless
the get_set_string method returns a non-empty string.
* New targets
RiscV ELF riscv*-*-elf
* Removed targets and native configurations
m88k running OpenBSD m88*-*-openbsd*
SH-5/SH64 ELF sh64-*-elf*, SH-5/SH64 support in sh*
SH-5/SH64 running GNU/Linux SH-5/SH64 support in sh*-*-linux*
SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
* Aarch64/Linux hardware watchpoints improvements
Hardware watchpoints on unaligned addresses are now properly
supported when running Linux kernel 4.10 or higher: read and access
watchpoints are no longer spuriously missed, and all watchpoints
lengths between 1 and 8 bytes are supported. On older kernels,
watchpoints set on unaligned addresses are no longer missed, with
the tradeoff that there is a possibility of false hits being
* Configure changes
This can be used to invoke "codesign -s CERT" after building gdb.
This option is useful on macOS, where code signing is required for
gdb to work properly.
--disable-gdbcli has been removed
This is now silently accepted, but does nothing.
*** Changes in GDB 8.1
* GDB now supports dynamically creating arbitrary register groups specified
in XML target descriptions. This allows for finer grain grouping of
registers on systems with a large amount of registers.
* The 'ptype' command now accepts a '/o' flag, which prints the
offsets and sizes of fields in a struct, like the pahole(1) tool.
* New "--readnever" command line option instructs GDB to not read each
symbol file's symbolic debug information. This makes startup faster
but at the expense of not being able to perform symbolic debugging.
This option is intended for use cases where symbolic debugging will
not be used, e.g., when you only need to dump the debuggee's core.
* GDB now uses the GNU MPFR library, if available, to emulate target
floating-point arithmetic during expression evaluation when the target
uses different floating-point formats than the host. At least version
3.1 of GNU MPFR is required.
* GDB now supports access to the guarded-storage-control registers and the
software-based guarded-storage broadcast control registers on IBM z14.
* On Unix systems, GDB now supports transmitting environment variables
that are to be set or unset to GDBserver. These variables will
affect the environment to be passed to the remote inferior.
To inform GDB of environment variables that are to be transmitted to
GDBserver, use the "set environment" command. Only user set
environment variables are sent to GDBserver.
To inform GDB of environment variables that are to be unset before
the remote inferior is started by the GDBserver, use the "unset
environment" command.
* Completion improvements
** GDB can now complete function parameters in linespecs and
explicit locations without quoting. When setting breakpoints,
quoting around functions names to help with TAB-completion is
generally no longer necessary. For example, this now completes
(gdb) b function(in[TAB]
(gdb) b function(int)
Related, GDB is no longer confused with completing functions in
C++ anonymous namespaces:
(gdb) b (anon[TAB]
(gdb) b (anonymous namespace)::[TAB][TAB]
(anonymous namespace)::a_function()
(anonymous namespace)::b_function()
** GDB now has much improved linespec and explicit locations TAB
completion support, that better understands what you're
completing and offers better suggestions. For example, GDB no
longer offers data symbols as possible completions when you're
setting a breakpoint.
** GDB now TAB-completes label symbol names.
** The "complete" command now mimics TAB completion accurately.
* New command line options (gcore)
Dump all memory mappings.
* Breakpoints on C++ functions are now set on all scopes by default
By default, breakpoints on functions/methods are now interpreted as
specifying all functions with the given name ignoring missing
leading scopes (namespaces and classes).
For example, assuming a C++ program with symbols named:
both commands "break func()" and "break B::func()" set a breakpoint
on both symbols.
You can use the new flag "-qualified" to override this. This makes
GDB interpret the specified function name as a complete
fully-qualified name instead. For example, using the same C++
program, the "break -q B::func" command sets a breakpoint on
"B::func", only. A parameter has been added to the Python
gdb.Breakpoint constructor to achieve the same result when creating
a breakpoint from Python.
* Breakpoints on functions marked with C++ ABI tags
GDB can now set breakpoints on functions marked with C++ ABI tags
(e.g., [abi:cxx11]). See here for a description of ABI tags:
Functions with a C++11 abi tag are demangled/displayed like this:
You can now set a breakpoint on such functions simply as if they had
no tag, like:
(gdb) b function(int)
Or if you need to disambiguate between tags, like:
(gdb) b function[abi:other_tag](int)
Tab completion was adjusted accordingly as well.
* Python Scripting
** New events gdb.new_inferior, gdb.inferior_deleted, and
gdb.new_thread are emitted. See the manual for further
description of these.
** A new function, "gdb.rbreak" has been added to the Python API.
This function allows the setting of a large number of breakpoints
via a regex pattern in Python. See the manual for further details.
** Python breakpoints can now accept explicit locations. See the
manual for a further description of this feature.
* New features in the GDB remote stub, GDBserver
** GDBserver is now able to start inferior processes with a
specified initial working directory.
The user can set the desired working directory to be used from
GDB using the new "set cwd" command.
** New "--selftest" command line option runs some GDBserver self
tests. These self tests are disabled in releases.
** On Unix systems, GDBserver now does globbing expansion and variable
substitution in inferior command line arguments.
This is done by starting inferiors using a shell, like GDB does.
See "set startup-with-shell" in the user manual for how to disable
this from GDB when using "target extended-remote". When using
"target remote", you can disable the startup with shell by using the
new "--no-startup-with-shell" GDBserver command line option.
** On Unix systems, GDBserver now supports receiving environment
variables that are to be set or unset from GDB. These variables
will affect the environment to be passed to the inferior.
* When catching an Ada exception raised with a message, GDB now prints
the message in the catchpoint hit notification. In GDB/MI mode, that
information is provided as an extra field named "exception-message"
in the *stopped notification.
* Trait objects can now be inspected When debugging Rust code. This
requires compiler support which will appear in Rust 1.24.
* New remote packets
Inform GDBserver of an environment variable that is to be passed to
the inferior when starting it.
Inform GDBserver of an environment variable that is to be unset
before starting the remote inferior.
Inform GDBserver that the environment should be reset (i.e.,
user-set environment variables should be unset).
Indicates whether the inferior must be started with a shell or not.
Tell GDBserver that the inferior to be started should use a specific
working directory.
* The "maintenance print c-tdesc" command now takes an optional
argument which is the file name of XML target description.
* The "maintenance selftest" command now takes an optional argument to
filter the tests to be run.
* The "enable", and "disable" commands now accept a range of
breakpoint locations, e.g. "enable 1.3-5".
* New commands
set|show cwd
Set and show the current working directory for the inferior.
set|show compile-gcc
Set and show compilation command used for compiling and injecting code
with the 'compile' commands.
set debug separate-debug-file
show debug separate-debug-file
Control the display of debug output about separate debug file search.
set dump-excluded-mappings
show dump-excluded-mappings
Control whether mappings marked with the VM_DONTDUMP flag should be
dumped when generating a core file.
maint info selftests
List the registered selftests.
Start the debugged program stopping at the first instruction.
set|show debug or1k
Control display of debugging messages related to OpenRISC targets.
set|show print type nested-type-limit
Set and show the limit of nesting level for nested types that the
type printer will show.
* TUI Single-Key mode now supports two new shortcut keys: `i' for stepi and
`o' for nexti.
* Safer/improved support for debugging with no debug info
GDB no longer assumes functions with no debug information return
This means that GDB now refuses to call such functions unless you
tell it the function's type, by either casting the call to the
declared return type, or by casting the function to a function
pointer of the right type, and calling that:
(gdb) p getenv ("PATH")
'getenv' has unknown return type; cast the call to its declared return type
(gdb) p (char *) getenv ("PATH")
$1 = 0x7fffffffe "/usr/local/bin:/"...
(gdb) p ((char * (*) (const char *)) getenv) ("PATH")
$2 = 0x7fffffffe "/usr/local/bin:/"...
Similarly, GDB no longer assumes that global variables with no debug
info have type 'int', and refuses to print the variable's value
unless you tell it the variable's type:
(gdb) p var
'var' has unknown type; cast it to its declared type
(gdb) p (float) var
$3 = 3.14
* New native configurations
FreeBSD/aarch64 aarch64*-*-freebsd*
FreeBSD/arm arm*-*-freebsd*
* New targets
FreeBSD/aarch64 aarch64*-*-freebsd*
FreeBSD/arm arm*-*-freebsd*
OpenRISC ELF or1k*-*-elf
* Removed targets and native configurations
Solaris 2.0-9 i?86-*-solaris2.[0-9], sparc*-*-solaris2.[0-9]
*** Changes in GDB 8.0
* GDB now supports access to the PKU register on GNU/Linux. The register is
added by the Memory Protection Keys for Userspace feature which will be
available in future Intel CPUs.
* GDB now supports C++11 rvalue references.
* Python Scripting
** New functions to start, stop and access a running btrace recording.
** Rvalue references are now supported in gdb.Type.
* GDB now supports recording and replaying rdrand and rdseed Intel 64
* Building GDB and GDBserver now requires a C++11 compiler.
For example, GCC 4.8 or later.
It is no longer possible to build GDB or GDBserver with a C
compiler. The --disable-build-with-cxx configure option has been
* Building GDB and GDBserver now requires GNU make >= 3.81.
It is no longer supported to build GDB or GDBserver with another
implementation of the make program or an earlier version of GNU make.
* Native debugging on MS-Windows supports command-line redirection
Command-line arguments used for starting programs on MS-Windows can
now include redirection symbols supported by native Windows shells,
such as '<', '>', '>>', '2>&1', etc. This affects GDB commands such
as "run", "start", and "set args", as well as the corresponding MI
* Support for thread names on MS-Windows.
GDB now catches and handles the special exception that programs
running on MS-Windows use to assign names to threads in the
* Support for Java programs compiled with gcj has been removed.
* User commands now accept an unlimited number of arguments.
Previously, only up to 10 was accepted.
* The "eval" command now expands user-defined command arguments.
This makes it easier to process a variable number of arguments:
define mycommand
set $i = 0
while $i < $argc
eval "print $arg%d", $i
set $i = $i + 1
* Target descriptions can now describe registers for sparc32 and sparc64.
* GDB now supports DWARF version 5 (debug information format).
Its .debug_names index is not yet supported.
* New native configurations
FreeBSD/mips mips*-*-freebsd
* New targets
Synopsys ARC arc*-*-elf32
FreeBSD/mips mips*-*-freebsd
* Removed targets and native configurations
Alpha running FreeBSD alpha*-*-freebsd*
Alpha running GNU/kFreeBSD alpha*-*-kfreebsd*-gnu
* New commands
Erases all the flash memory regions reported by the target.
maint print arc arc-instruction address
Print internal disassembler information about instruction at a given address.
* New options
set disassembler-options
show disassembler-options
Controls the passing of target specific information to the disassembler.
If it is necessary to specify more than one disassembler option then
multiple options can be placed together into a comma separated list.
The default value is the empty string. Currently, the only supported
targets are ARM, PowerPC and S/390.
* New MI commands
Erases all the flash memory regions reported by the target. This is
equivalent to the CLI command flash-erase.
List the shared libraries in the program. This is
equivalent to the CLI command "info shared".
Catchpoints stopping the program when Ada exceptions are
handled. This is equivalent to the CLI command "catch handlers".
*** Changes in GDB 7.12
* GDB and GDBserver now build with a C++ compiler by default.
The --enable-build-with-cxx configure option is now enabled by
default. One must now explicitly configure with
--disable-build-with-cxx in order to build with a C compiler. This
option will be removed in a future release.
* GDBserver now supports recording btrace without maintaining an active
GDB connection.
* GDB now supports a negative repeat count in the 'x' command to examine
memory backward from the given address. For example:
(gdb) bt
#0 Func1 (n=42, p=0x40061c "hogehoge") at main.cpp:4
#1 0x400580 in main (argc=1, argv=0x7fffffffe5c8) at main.cpp:8
(gdb) x/-5i 0x0000000000400580
0x40056a <main(int, char**)+8>: mov %edi,-0x4(%rbp)
0x40056d <main(int, char**)+11>: mov %rsi,-0x10(%rbp)
0x400571 <main(int, char**)+15>: mov $0x40061c,%esi
0x400576 <main(int, char**)+20>: mov $0x2a,%edi
0x40057b <main(int, char**)+25>:
callq 0x400536 <Func1(int, char const*)>
* Fortran: Support structures with fields of dynamic types and
arrays of dynamic types.
* The symbol dumping maintenance commands have new syntax.
maint print symbols [-pc address] [--] [filename]
maint print symbols [-objfile objfile] [-source source] [--] [filename]
maint print psymbols [-objfile objfile] [-pc address] [--] [filename]
maint print psymbols [-objfile objfile] [-source source] [--] [filename]
maint print msymbols [-objfile objfile] [--] [filename]
* GDB now supports multibit bitfields and enums in target register
* New Python-based convenience function $_as_string(val), which returns
the textual representation of a value. This function is especially
useful to obtain the text label of an enum value.
* Intel MPX bound violation handling.
Segmentation faults caused by a Intel MPX boundary violation
now display the kind of violation (upper or lower), the memory
address accessed and the memory bounds, along with the usual
signal received and code location.
For example:
Program received signal SIGSEGV, Segmentation fault
Upper bound violation while accessing address 0x7fffffffc3b3
Bounds: [lower = 0x7fffffffc390, upper = 0x7fffffffc3a3]
0x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68
* Rust language support.
GDB now supports debugging programs written in the Rust programming
language. See for more information about
* Support for running interpreters on specified input/output devices
GDB now supports a new mechanism that allows frontends to provide
fully featured GDB console views, as a better alternative to
building such views on top of the "-interpreter-exec console"
command. See the new "new-ui" command below. With that command,
frontends can now start GDB in the traditional command-line mode
running in an embedded terminal emulator widget, and create a
separate MI interpreter running on a specified i/o device. In this
way, GDB handles line editing, history, tab completion, etc. in the
console all by itself, and the GUI uses the separate MI interpreter
for its own control and synchronization, invisible to the command
* The "catch syscall" command catches groups of related syscalls.
The "catch syscall" command now supports catching a group of related
syscalls using the 'group:' or 'g:' prefix.
* New commands
skip -file file
skip -gfile file-glob-pattern
skip -function function
skip -rfunction regular-expression
A generalized form of the skip command, with new support for
glob-style file names and regular expressions for function names.
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 structure.
maint selftest
Run any GDB unit tests that were compiled in.
Start a new user interface instance running INTERP as interpreter,
using the TTY file for input/output.
* Python Scripting
** gdb.Breakpoint objects have a new attribute "pending", which
indicates whether the breakpoint is pending.
** Three new breakpoint-related events have been added:
gdb.breakpoint_created, gdb.breakpoint_modified, and
signal-event EVENTID
Signal ("set") the given MS-Windows event object. This is used in
conjunction with the Windows JIT debugging (AeDebug) support, where
the OS suspends a crashing process until a debugger can attach to
it. Resuming the crashing process, in order to debug it, is done by
signalling an event.
* Support for tracepoints and fast tracepoints on s390-linux and s390x-linux
was added in GDBserver, including JIT compiling fast tracepoint's
conditional expression bytecode into native code.
* Support for various remote target protocols and ROM monitors has
been removed:
target m32rsdi Remote M32R debugging over SDI
target mips MIPS remote debugging protocol
target pmon PMON ROM monitor
target ddb NEC's DDB variant of PMON for Vr4300
target rockhopper NEC RockHopper variant of PMON
target lsi LSI variant of PMO
* Support for tracepoints and fast tracepoints on powerpc-linux,
powerpc64-linux, and powerpc64le-linux was added in GDBserver,
including JIT compiling fast tracepoint's conditional expression
bytecode into native code.
* MI async record =record-started now includes the method and format used for
recording. For example:
* MI async record =thread-selected now includes the frame field. For example:
* New targets
Andes NDS32 nds32*-*-elf
*** Changes in GDB 7.11
* GDB now supports debugging kernel-based threads on FreeBSD.
* Per-inferior thread numbers
Thread numbers are now per inferior instead of global. If you're
debugging multiple inferiors, GDB displays thread IDs using a
qualified INF_NUM.THR_NUM form. For example:
(gdb) info threads
Id Target Id Frame
1.1 Thread 0x7ffff7fc2740 (LWP 8155) (running)
1.2 Thread 0x7ffff7fc1700 (LWP 8168) (running)
* 2.1 Thread 0x7ffff7fc2740 (LWP 8157) (running)
2.2 Thread 0x7ffff7fc1700 (LWP 8190) (running)
As consequence, thread numbers as visible in the $_thread
convenience variable and in Python's InferiorThread.num attribute
are no longer unique between inferiors.
GDB now maintains a second thread ID per thread, referred to as the
global thread ID, which is the new equivalent of thread numbers in
previous releases. See also $_gthread below.
For backwards compatibility, MI's thread IDs always refer to global
* Commands that accept thread IDs now accept the qualified
INF_NUM.THR_NUM form as well. For example:
(gdb) thread 2.1
[Switching to thread 2.1 (Thread 0x7ffff7fc2740 (LWP 8157))] (running)
* In commands that accept a list of thread IDs, you can now refer to
all threads of an inferior using a star wildcard. GDB accepts
"INF_NUM.*", to refer to all threads of inferior INF_NUM, and "*" to
refer to all threads of the current inferior. For example, "info
threads 2.*".
* You can use "info threads -gid" to display the global thread ID of
all threads.
* The new convenience variable $_gthread holds the global number of
the current thread.
* The new convenience variable $_inferior holds the number of the
current inferior.
* GDB now displays the ID and name of the thread that hit a breakpoint
or received a signal, if your program is multi-threaded. For
Thread 3 "bar" hit Breakpoint 1 at 0x40087a: file program.c, line 20.
Thread 1 "main" received signal SIGINT, Interrupt.
* Record btrace now supports non-stop mode.
* Support for tracepoints on aarch64-linux was added in GDBserver.
* The 'record instruction-history' command now indicates speculative execution
when using the Intel Processor Trace recording format.
* GDB now allows users to specify explicit locations, bypassing
the linespec parser. This feature is also available to GDB/MI
* Multi-architecture debugging is supported on AArch64 GNU/Linux.
GDB now is able to debug both AArch64 applications and ARM applications
at the same time.
* Support for fast tracepoints on aarch64-linux was added in GDBserver,
including JIT compiling fast tracepoint's conditional expression bytecode
into native code.
* GDB now supports displaced stepping on AArch64 GNU/Linux.
* "info threads", "info inferiors", "info display", "info checkpoints"
and "maint info program-spaces" now list the corresponding items in
ascending ID order, for consistency with all other "info" commands.
* In Ada, the overloads selection menu has been enhanced to display the
parameter types and the return types for the matching overloaded subprograms.
* New commands
maint set target-non-stop (on|off|auto)
maint show target-non-stop
Control whether GDB targets always operate in non-stop mode even if
"set non-stop" is "off". The default is "auto", meaning non-stop
mode is enabled if supported by the target.
maint set bfd-sharing
maint show bfd-sharing
Control the reuse of bfd objects.
set debug bfd-cache
show debug bfd-cache
Control display of debugging info regarding bfd caching.
set debug fbsd-lwp
show debug fbsd-lwp
Control display of debugging info regarding FreeBSD threads.
set remote multiprocess-extensions-packet
show remote multiprocess-extensions-packet
Set/show the use of the remote protocol multiprocess extensions.
set remote thread-events
show remote thread-events
Set/show the use of thread create/exit events.
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 activated (@code{on}) by default.
set max-value-size
show max-value-size
Controls the maximum size of memory, in bytes, that GDB will
allocate for value contents. Prevents incorrect programs from
causing GDB to allocate overly large buffers. Default is 64k.
* The "disassemble" command accepts a new modifier: /s.
It prints mixed source+disassembly like /m with two differences:
- disassembled instructions are now printed in program order, and
- and source for all relevant files is now printed.
The "/m" option is now considered deprecated: its "source-centric"
output hasn't proved useful in practice.
* The "record instruction-history" command accepts a new modifier: /s.
It behaves exactly like /m and prints mixed source+disassembly.
* The "set scheduler-locking" command supports a new mode "replay".
It behaves like "off" in record mode and like "on" in replay mode.
* Support for various ROM monitors has been removed:
target dbug dBUG ROM monitor for Motorola ColdFire
target picobug Motorola picobug monitor
target dink32 DINK32 ROM monitor for PowerPC
target m32r Renesas M32R/D ROM monitor
target mon2000 mon2000 ROM monitor
target ppcbug PPCBUG ROM monitor for PowerPC
* Support for reading/writing memory and extracting values on architectures
whose memory is addressable in units of any integral multiple of 8 bits.
catch handlers
Allows to break when an Ada exception is handled.
* New remote packets
exec stop reason
Indicates that an exec system call was executed.
exec-events feature in qSupported
The qSupported packet allows GDB to request support for exec
events using the new 'gdbfeature' exec-event, and the qSupported
response can contain the corresponding 'stubfeature'. Set and
show commands can be used to display whether these features are enabled.
Equivalent to interrupting with the ^C character, but works in
non-stop mode.
thread created stop reason (T05 create:...)
Indicates that the thread was just created and is stopped at entry.
thread exit stop reply (w exitcode;tid)
Indicates that the thread has terminated.
Enables/disables thread create and exit event reporting. For
example, this is used in non-stop mode when GDB stops a set of
threads and synchronously waits for the their corresponding stop
replies. Without exit events, if one of the threads exits, GDB
would hang forever not knowing that it should no longer expect a
stop for that same thread.
N stop reply
Indicates that there are no resumed threads left in the target (all
threads are stopped). The remote stub reports support for this stop
reply to GDB's qSupported query.
Enables/disables catching syscalls from the inferior process.
The remote stub reports support for this packet to GDB's qSupported query.
syscall_entry stop reason
Indicates that a syscall was just called.
syscall_return stop reason
Indicates that a syscall just returned.
* Extended-remote exec events
** GDB now has support for exec events on extended-remote Linux targets.
For such targets with Linux kernels 2.5.46 and later, this enables
follow-exec-mode and exec catchpoints.
set remote exec-event-feature-packet
show remote exec-event-feature-packet
Set/show the use of the remote exec event feature.
* Thread names in remote protocol
The reply to qXfer:threads:read may now include a name attribute for each
* Target remote mode fork and exec events
** GDB now has support for fork and exec events on target remote mode
Linux targets. For such targets with Linux kernels 2.5.46 and later,
this enables follow-fork-mode, detach-on-fork, follow-exec-mode, and
fork and exec catchpoints.
* Remote syscall events
** GDB now has support for catch syscall on remote Linux targets,
currently enabled on x86/x86_64 architectures.
set remote catch-syscall-packet
show remote catch-syscall-packet
Set/show the use of the remote catch syscall feature.
* MI changes
** The -var-set-format command now accepts the zero-hexadecimal
format. It outputs data in hexadecimal format with zero-padding on the
* Python Scripting
** gdb.InferiorThread objects have a new attribute "global_num",
which refers to the thread's global thread ID. The existing
"num" attribute now refers to the thread's per-inferior number.
See "Per-inferior thread numbers" above.
** gdb.InferiorThread objects have a new attribute "inferior", which
is the Inferior object the thread belongs to.
*** Changes in GDB 7.10
* Support for process record-replay and reverse debugging on aarch64*-linux*
targets has been added. GDB now supports recording of A64 instruction set
including advance SIMD instructions.
* Support for Sun's version of the "stabs" debug file format has been removed.
* GDB now honors the content of the file /proc/PID/coredump_filter
(PID is the process ID) on GNU/Linux systems. This file can be used
to specify the types of memory mappings that will be included in a
corefile. For more information, please refer to the manual page of
"core(5)". GDB also has a new command: "set use-coredump-filter
on|off". It allows to set whether GDB will read the content of the
/proc/PID/coredump_filter file when generating a corefile.
* The "info os" command on GNU/Linux can now display information on
cpu information :
"info os cpus" Listing of all cpus/cores on the system
* GDB has two new commands: "set serial parity odd|even|none" and
"show serial parity". These allows to set or show parity for the
remote serial I/O.
* The "info source" command now displays the producer string if it was
present in the debug info. This typically includes the compiler version
and may include things like its command line arguments.
* The "info dll", an alias of the "info sharedlibrary" command,
is now available on all platforms.
* Directory names supplied to the "set sysroot" commands may be
prefixed with "target:" to tell GDB to access shared libraries from
the target system, be it local or remote. This replaces the prefix
"remote:". The default sysroot has been changed from "" to
"target:". "remote:" is automatically converted to "target:" for
backward compatibility.
* The system root specified by "set sysroot" will be prepended to the
filename of the main executable (if reported to GDB as absolute by
the operating system) when starting processes remotely, and when
attaching to already-running local or remote processes.
* GDB now supports automatic location and retrieval of executable
files from remote targets. Remote debugging can now be initiated
using only a "target remote" or "target extended-remote" command
(no "set sysroot" or "file" commands are required). See "New remote
packets" below.
* The "dump" command now supports verilog hex format.
* GDB now supports the vector ABI on S/390 GNU/Linux targets.
* On GNU/Linux, GDB and gdbserver are now able to access executable
and shared library files without a "set sysroot" command when
attaching to processes running in different mount namespaces from
the debugger. This makes it possible to attach to processes in
containers as simply as "gdb -p PID" or "gdbserver --attach PID".
See "New remote packets" below.
* The "tui reg" command now provides completion for all of the
available register groups, including target specific groups.
* The HISTSIZE environment variable is no longer read when determining
the size of GDB's command history. GDB now instead reads the dedicated
GDBHISTSIZE environment variable. Setting GDBHISTSIZE to "-1" or to "" now
disables truncation of command history. Non-numeric values of GDBHISTSIZE
are ignored.
* Guile Scripting
** Memory ports can now be unbuffered.
* Python Scripting
** gdb.Objfile objects have a new attribute "username",
which is the name of the objfile as specified by the user,
without, for example, resolving symlinks.
** You can now write frame unwinders in Python.
** gdb.Type objects have a new method "optimized_out",
returning optimized out gdb.Value instance of this type.
** gdb.Value objects have new methods "reference_value" and
"const_value" which return a reference to the value and a
"const" version of the value respectively.
* New commands
maint print symbol-cache
Print the contents of the symbol cache.
maint print symbol-cache-statistics
Print statistics of symbol cache usage.
maint flush-symbol-cache
Flush the contents of the symbol cache.
record btrace bts
record bts
Start branch trace recording using Branch Trace Store (BTS) format.
compile print
Evaluate expression by using the compiler and print result.
tui enable
tui disable
Explicit commands for enabling and disabling tui mode.
show mpx bound
set mpx bound on i386 and amd64
Support for bound table investigation on Intel MPX enabled applications.
record btrace pt
record pt
Start branch trace recording using Intel Processor Trace format.
maint info btrace
Print information about branch tracing internals.
maint btrace packet-history
Print the raw branch tracing data.
maint btrace clear-packet-history
Discard the stored raw branch tracing data.
maint btrace clear
Discard all branch tracing data. It will be fetched and processed
anew by the next "record" command.
* New options
set debug dwarf-die
Renamed from "set debug dwarf2-die".
show debug dwarf-die
Renamed from "show debug dwarf2-die".
set debug dwarf-read
Renamed from "set debug dwarf2-read".
show debug dwarf-read
Renamed from "show debug dwarf2-read".
maint set dwarf always-disassemble
Renamed from "maint set dwarf2 always-disassemble".
maint show dwarf always-disassemble
Renamed from "maint show dwarf2 always-disassemble".
maint set dwarf max-cache-age
Renamed from "maint set dwarf2 max-cache-age".
maint show dwarf max-cache-age
Renamed from "maint show dwarf2 max-cache-age".
set debug dwarf-line
show debug dwarf-line
Control display of debugging info regarding DWARF line processing.
set max-completions
show max-completions
Set the maximum number of candidates to be considered during
completion. The default value is 200. This limit allows GDB
to avoid generating large completion lists, the computation of
which can cause the debugger to become temporarily unresponsive.
set history remove-duplicates
show history remove-duplicates
Control the removal of duplicate history entries.
maint set symbol-cache-size
maint show symbol-cache-size
Control the size of the symbol cache.
set|show record btrace bts buffer-size
Set and show the size of the ring buffer used for branch tracing in
BTS format.
The obtained size may differ from the requested size. Use "info
record" to see the obtained buffer size.
set debug linux-namespaces
show debug linux-namespaces
Control display of debugging info regarding Linux namespaces.
set|show record btrace pt buffer-size
Set and show the size of the ring buffer used for branch tracing in
Intel Processor Trace format.
The obtained size may differ from the requested size. Use "info
record" to see the obtained buffer size.
maint set|show btrace pt skip-pad
Set and show whether PAD packets are skipped when computing the
packet history.
* The command 'thread apply all' can now support new option '-ascending'
to call its specified command for all threads in ascending order.
* Python/Guile scripting
** GDB now supports auto-loading of Python/Guile scripts contained in the
special section named `.debug_gdb_scripts'.
* New remote packets
Return the branch trace configuration for the current thread.
Set the requested ring buffer size for branch tracing in BTS format.
Enable Intel Processor Trace-based branch tracing for the current
process. The remote stub reports support for this packet to GDB's
qSupported query.
Set the requested ring buffer size for branch tracing in Intel Processor
Trace format.
swbreak stop reason
Indicates a memory breakpoint instruction was executed, irrespective
of whether it was GDB that planted the breakpoint or the breakpoint
is hardcoded in the program. This is required for correct non-stop
mode operation.
hwbreak stop reason
Indicates the target stopped for a hardware breakpoint. This is
required for correct non-stop mode operation.
Return information about files on the remote system.
Return the full absolute name of the file that was executed to
create a process running on the remote system.
Select the filesystem on which vFile: operations with filename
arguments will operate. This is required for GDB to be able to
access files on remote targets where the remote stub does not
share a common filesystem with the inferior(s).
fork stop reason
Indicates that a fork system call was executed.
vfork stop reason
Indicates that a vfork system call was executed.
vforkdone stop reason
Indicates that a vfork child of the specified process has executed
an exec or exit, allowing the vfork parent to resume execution.
fork-events and vfork-events features in qSupported
The qSupported packet allows GDB to request support for fork and
vfork events using new 'gdbfeatures' fork-events and vfork-events,
and the qSupported response can contain the corresponding
'stubfeatures'. Set and show commands can be used to display
whether these features are enabled.
* Extended-remote fork events
** GDB now has support for fork events on extended-remote Linux
targets. For targets with Linux kernels 2.5.60 and later, this
enables follow-fork-mode and detach-on-fork for both fork and
vfork, as well as fork and vfork catchpoints.
* The info record command now shows the recording format and the
branch tracing configuration for the current thread when using
the btrace record target.
For the BTS format, it shows the ring buffer size.
* GDB now has support for DTrace USDT (Userland Static Defined
Tracing) probes. The supported targets are x86_64-*-linux-gnu.
* GDB now supports access to vector registers on S/390 GNU/Linux
* Removed command line options
-xdb HP-UX XDB compatibility mode.
* Removed targets and native configurations
HP/PA running HP-UX hppa*-*-hpux*
Itanium running HP-UX ia64-*-hpux*
* New configure options
This configure option allows the user to build GDB with support for
Intel Processor Trace (default: auto). This requires libipt.
Specify the path to the version of libipt that GDB should use.
$PATH/include should contain the intel-pt.h header and
$PATH/lib should contain the library.
*** Changes in GDB 7.9.1
* Python Scripting
** Xmethods can now specify a result type.
*** Changes in GDB 7.9
* GDB now supports hardware watchpoints on x86 GNU Hurd.
* Python Scripting
** You can now access frame registers from Python scripts.
** New attribute 'producer' for gdb.Symtab objects.
** gdb.Objfile objects have a new attribute "progspace",
which is the gdb.Progspace object of the containing program space.
** gdb.Objfile objects have a new attribute "owner".
** gdb.Objfile objects have a new attribute "build_id",
which is the build ID generated when the file was built.
** gdb.Objfile objects have a new method "add_separate_debug_file".
** A new event "gdb.clear_objfiles" has been added, triggered when
selecting a new file to debug.
** You can now add attributes to gdb.Objfile and gdb.Progspace objects.
** New function gdb.lookup_objfile.
New events which are triggered when GDB modifies the state of the
** Function call is about to be made.
** Function call has just been made.
** A memory location has been altered.
** A register has been altered.
* New Python-based convenience functions:
** $_caller_is(name [, number_of_frames])
** $_caller_matches(regexp [, number_of_frames])
** $_any_caller_is(name [, number_of_frames])
** $_any_caller_matches(regexp [, number_of_frames])
* GDB now supports the compilation and injection of source code into
the inferior. GDB will use GCC 5.0 or higher built with
to compile the source code to object code, and if successful, inject
and execute that code within the current context of the inferior.
Currently the C language is supported. The commands used to
interface with this new feature are:
compile code [-raw|-r] [--] [source code]
compile file [-raw|-r] filename
* New commands
demangle [-l language] [--] name
Demangle "name" in the specified language, or the current language
if elided. This command is renamed from the "maint demangle" command.
The latter is kept as a no-op to avoid "maint demangle" being interpreted
as "maint demangler-warning".
queue-signal signal-name-or-number
Queue a signal to be delivered to the thread when it is resumed.
add-auto-load-scripts-directory directory
Add entries to the list of directories from which to load auto-loaded
maint print user-registers
List all currently available "user" registers.
compile code [-r|-raw] [--] [source code]
Compile, inject, and execute in the inferior the executable object
code produced by compiling the provided source code.
compile file [-r|-raw] filename
Compile and inject into the inferior the executable object code
produced by compiling the source code stored in the filename
* On resume, GDB now always passes the signal the program had stopped
for to the thread the signal was sent to, even if the user changed
threads before resuming. Previously GDB would often (but not
always) deliver the signal to the thread that happens to be current
at resume time.
* Conversely, the "signal" command now consistently delivers the
requested signal to the current thread. GDB now asks for
confirmation if the program had stopped for a signal and the user
switched threads meanwhile.
* "breakpoint always-inserted" modes "off" and "auto" merged.
Now, when 'breakpoint always-inserted mode' is set to "off", GDB
won't remove breakpoints from the target until all threads stop,
even in non-stop mode. The "auto" mode has been removed, and "off"
is now the default mode.
* New options
set debug symbol-lookup
show debug symbol-lookup
Control display of debugging info regarding symbol lookup.
* MI changes
** The -list-thread-groups command outputs an exit-code field for
inferiors that have exited.
* New targets
MIPS SDE mips*-sde*-elf*
* Removed targets
Support for these obsolete configurations has been removed.
Alpha running OSF/1 (or Tru64) alpha*-*-osf*
SGI Irix-5.x mips-*-irix5*
SGI Irix-6.x mips-*-irix6*
VAX running (4.2 - 4.3 Reno) BSD vax-*-bsd*
VAX running Ultrix vax-*-ultrix*
* The "dll-symbols" command, and its two aliases ("add-shared-symbol-files"
and "assf"), have been removed. Use the "sharedlibrary" command, or
its alias "share", instead.
*** Changes in GDB 7.8
* New command line options
-D data-directory
This is an alias for the --data-directory option.
* GDB supports printing and modifying of variable length automatic arrays
as specified in ISO C99.
* The ARM simulator now supports instruction level tracing
with or without disassembly.
* Guile scripting
GDB now has support for scripting using Guile. Whether this is
available is determined at configure time.
Guile version 2.0 or greater is required.
Guile version 2.0.9 is well tested, earlier 2.0 versions are not.
* New commands (for set/show, see "New options" below)
guile [code]
gu [code]
Invoke CODE by passing it to the Guile interpreter.
Start a Guile interactive prompt (or "repl" for "read-eval-print loop").
info auto-load guile-scripts [regexp]
Print the list of automatically loaded Guile scripts.
* The source command is now capable of sourcing Guile scripts.
This feature is dependent on the debugger being built with Guile support.
* New options
set print symbol-loading (off|brief|full)
show print symbol-loading
Control whether to print informational messages when loading symbol
information for a file. The default is "full", but when debugging
programs with large numbers of shared libraries the amount of output
becomes less useful.
set guile print-stack (none|message|full)
show guile print-stack
Show a stack trace when an error is encountered in a Guile script.
set auto-load guile-scripts (on|off)
show auto-load guile-scripts
Control auto-loading of Guile script files.
maint ada set ignore-descriptive-types (on|off)
maint ada show ignore-descriptive-types
Control whether the debugger should ignore descriptive types in Ada
programs. The default is not to ignore the descriptive types. See
the user manual for more details on descriptive types and the intended
usage of this option.
set auto-connect-native-target
Control whether GDB is allowed to automatically connect to the
native target for the run, attach, etc. commands when not connected
to any target yet. See also "target native" below.
set record btrace replay-memory-access (read-only|read-write)
show record btrace replay-memory-access
Control what memory accesses are allowed during replay.
maint set target-async (on|off)
maint show target-async
This controls whether GDB targets operate in synchronous or
asynchronous mode. Normally the default is asynchronous, if it is
available; but this can be changed to more easily debug problems
occurring only in synchronous mode.
set mi-async (on|off)
show mi-async
Control whether MI asynchronous mode is preferred. This supersedes
"set target-async" of previous GDB versions.
* "set target-async" is deprecated as a CLI option and is now an alias
for "set mi-async" (only puts MI into async mode).
* Background execution commands (e.g., "c&", "s&", etc.) are now
possible ``out of the box'' if the target supports them. Previously
the user would need to explicitly enable the possibility with the
"set target-async on" command.
* New features in the GDB remote stub, GDBserver
** New option --debug-format=option1[,option2,...] allows one to add
additional text to each output. At present only timestamps
are supported: --debug-format=timestamps.
Timestamps can also be turned on with the
"monitor set debug-format timestamps" command from GDB.
* The 'record instruction-history' command now starts counting instructions
at one. This also affects the instruction ranges reported by the
'record function-call-history' command when given the /i modifier.
* The command 'record function-call-history' supports a new modifier '/c' to
indent the function names based on their call stack depth.
The fields for the '/i' and '/l' modifier have been reordered.
The source line range is now prefixed with 'at'.
The instruction range is now prefixed with 'inst'.
Both ranges are now printed as '<from>, <to>' to allow copy&paste to the
"record instruction-history" and "list" commands.
* The ranges given as arguments to the 'record function-call-history' and
'record instruction-history' commands are now inclusive.
* The btrace record target now supports the 'record goto' command.
For locations inside the execution trace, the back trace is computed
based on the information stored in the execution trace.
* The btrace record target supports limited reverse execution and replay.
The target does not record data and therefore does not allow reading
memory or registers.
* The "catch syscall" command now works on s390*-linux* targets.
* The "compare-sections" command is no longer specific to target
remote. It now works with all targets.
* All native targets are now consistently called "native".
Consequently, the "target child", "target GNU", "target djgpp",
"target procfs" (Solaris/Irix/OSF/AIX) and "target darwin-child"
commands have been replaced with "target native". The QNX/NTO port
leaves the "procfs" target in place and adds a "native" target for
consistency with other ports. The impact on users should be minimal
as these commands previously either throwed an error, or were
no-ops. The target's name is visible in the output of the following
commands: "help target", "info target", "info files", "maint print
* The "target native" command now connects to the native target. This
can be used to launch native programs even when "set
auto-connect-native-target" is set to off.
* GDB now supports access to Intel MPX registers on GNU/Linux.
* Support for Intel AVX-512 registers on GNU/Linux.
Support displaying and modifying Intel AVX-512 registers
$zmm0 - $zmm31 and $k0 - $k7 on GNU/Linux.
* New remote packets
qXfer:btrace:read's annex
The qXfer:btrace:read packet supports a new annex 'delta' to read
branch trace incrementally.
* Python Scripting
** Valid Python operations on gdb.Value objects representing
structs/classes invoke the corresponding overloaded operators if
** New `Xmethods' feature in the Python API. Xmethods are
additional methods or replacements for existing methods of a C++
class. This feature is useful for those cases where a method
defined in C++ source code could be inlined or optimized out by
the compiler, making it unavailable to GDB.
* New targets
PowerPC64 GNU/Linux little-endian powerpc64le-*-linux*
* The "dll-symbols" command, and its two aliases ("add-shared-symbol-files"
and "assf"), have been deprecated. Use the "sharedlibrary" command, or
its alias "share", instead.
* The commands "set remotebaud" and "show remotebaud" are no longer
supported. Use "set serial baud" and "show serial baud" (respectively)
* MI changes
** A new option "-gdb-set mi-async" replaces "-gdb-set
target-async". The latter is left as a deprecated alias of the
former for backward compatibility. If the target supports it,
CLI background execution commands are now always possible by
default, independently of whether the frontend stated a
preference for asynchronous execution with "-gdb-set mi-async".
Previously "-gdb-set target-async off" affected both MI execution
commands and CLI execution commands.
*** Changes in GDB 7.7
* Improved support for process record-replay and reverse debugging on
arm*-linux* targets. Support for thumb32 and syscall instruction
recording has been added.
* GDB now supports SystemTap SDT probes on AArch64 GNU/Linux.
* GDB now supports Fission DWP file format version 2.
* New convenience function "$_isvoid", to check whether an expression
is void. A void expression is an expression where the type of the
result is "void". For example, some convenience variables may be
"void" when evaluated (e.g., "$_exitcode" before the execution of
the program being debugged; or an undefined convenience variable).
Another example, when calling a function whose return type is
* The "maintenance print objfiles" command now takes an optional regexp.
* The "catch syscall" command now works on arm*-linux* targets.
* GDB now consistently shows "<not saved>" when printing values of
registers the debug info indicates have not been saved in the frame
and there's nowhere to retrieve them from
(callee-saved/call-clobbered registers):
(gdb) p $rax
$1 = <not saved>
(gdb) info registers rax
rax <not saved>
Before, the former would print "<optimized out>", and the latter
"*value not available*".
* New script contrib/ for adding .gdb_index sections
to binaries.
* Python scripting
** Frame filters and frame decorators have been added.
** Temporary breakpoints are now supported.
** Line tables representation has been added.
** New attribute 'parent_type' for gdb.Field objects.
** gdb.Field objects can be used as subscripts on gdb.Value objects.
** New attribute 'name' for gdb.Type objects.
* New targets
Nios II ELF nios2*-*-elf
Nios II GNU/Linux nios2*-*-linux
Texas Instruments MSP430 msp430*-*-elf
* Removed native configurations
Support for these a.out NetBSD and OpenBSD obsolete configurations has
been removed. ELF variants of these configurations are kept supported.
arm*-*-netbsd* but arm*-*-netbsdelf* is kept supported.
i[34567]86-*-netbsd* but i[34567]86-*-netbsdelf* is kept supported.
i[34567]86-*-openbsd[0-2].* but i[34567]86-*-openbsd* is kept supported.
m68*-*-netbsd* but m68*-*-netbsdelf* is kept supported.
sparc-*-netbsd* but sparc-*-netbsdelf* is kept supported.
vax-*-netbsd* but vax-*-netbsdelf* is kept supported.
* New commands:
catch rethrow
Like "catch throw", but catches a re-thrown exception.
maint check-psymtabs
Renamed from old "maint check-symtabs".
maint check-symtabs
Perform consistency checks on symtabs.
maint expand-symtabs
Expand symtabs matching an optional regexp.
show configuration
Display the details of GDB configure-time options.
maint set|show per-command
maint set|show per-command space
maint set|show per-command time
maint set|show per-command symtab
Enable display of per-command gdb resource usage.
remove-symbol-file FILENAME
remove-symbol-file -a ADDRESS
Remove a symbol file added via add-symbol-file. The file to remove
can be identified by its filename or by an address that lies within
the boundaries of this symbol file in memory.
info exceptions
info exceptions REGEXP
Display the list of Ada exceptions defined in the program being
debugged. If provided, only the exceptions whose names match REGEXP
are listed.
* New options
set debug symfile off|on
show debug symfile
Control display of debugging info regarding reading symbol files and
symbol tables within those files
set print raw frame-arguments
show print raw frame-arguments
Set/show whether to print frame arguments in raw mode,
disregarding any defined pretty-printers.
set remote trace-status-packet
show remote trace-status-packet
Set/show the use of remote protocol qTStatus packet.
set debug nios2
show debug nios2
Control display of debugging messages related to Nios II targets.
set range-stepping
show range-stepping
Control whether target-assisted range stepping is enabled.
set startup-with-shell
show startup-with-shell
Specifies whether Unix child processes are started via a shell or
set code-cache
show code-cache
Use the target memory cache for accesses to the code segment. This
improves performance of remote debugging (particularly disassembly).
* You can now use a literal value 'unlimited' for options that
interpret 0 or -1 as meaning "unlimited". E.g., "set
trace-buffer-size unlimited" is now an alias for "set
trace-buffer-size -1" and "set height unlimited" is now an alias for
"set height 0".
* The "set debug symtab-create" debugging option of GDB has been changed to
accept a verbosity level. 0 means "off", 1 provides basic debugging
output, and values of 2 or greater provides more verbose output.
* New command-line options
Display the details of GDB configure-time options.
* The command 'tsave' can now support new option '-ctf' to save trace
buffer in Common Trace Format.
* Newly installed $prefix/bin/gcore acts as a shell interface for the
GDB command gcore.
* GDB now implements the C++ 'typeid' operator.
* The new convenience variable $_exception holds the exception being
thrown or caught at an exception-related catchpoint.
* The exception-related catchpoints, like "catch throw", now accept a
regular expression which can be used to filter exceptions by type.
* The new convenience variable $_exitsignal is automatically set to
the terminating signal number when the program being debugged dies
due to an uncaught signal.
* MI changes
** All MI commands now accept an optional "--language" option.
Support for this feature can be verified by using the "-list-features"
command, which should contain "language-option".
** The new command -info-gdb-mi-command allows the user to determine
whether a GDB/MI command is supported or not.
** The "^error" result record returned when trying to execute an undefined
GDB/MI command now provides a variable named "code" whose content is the
"undefined-command" error code. Support for this feature can be verified
by using the "-list-features" command, which should contain
** The -trace-save MI command can optionally save trace buffer in Common
Trace Format now.
** The new command -dprintf-insert sets a dynamic printf breakpoint.
** The command -data-list-register-values now accepts an optional
"--skip-unavailable" option. When used, only the available registers
are displayed.
** The new command -trace-frame-collected dumps collected variables,
computed expressions, tvars, memory and registers in a traceframe.
** The commands -stack-list-locals, -stack-list-arguments and
-stack-list-variables now accept an option "--skip-unavailable".
When used, only the available locals or arguments are displayed.
** The -exec-run command now accepts an optional "--start" option.
When used, the command follows the same semantics as the "start"
command, stopping the program's execution at the start of its
main subprogram. Support for this feature can be verified using
the "-list-features" command, which should contain
** The new commands -catch-assert and -catch-exceptions insert
catchpoints stopping the program when Ada exceptions are raised.
** The new command -info-ada-exceptions provides the equivalent of
the new "info exceptions" command.
* New system-wide configuration scripts
A GDB installation now provides scripts suitable for use as system-wide
configuration scripts for the following systems:
** ElinOS
** Wind River Linux
* GDB now supports target-assigned range stepping with remote targets.
This improves the performance of stepping source lines by reducing
the number of control packets from/to GDB. See "New remote packets"
* GDB now understands the element 'tvar' in the XML traceframe info.
It has the id of the collected trace state variables.
* On S/390 targets that provide the transactional-execution feature,
the program interruption transaction diagnostic block (TDB) is now
represented as a number of additional "registers" in GDB.
* New remote packets
The vCont packet supports a new 'r' action, that tells the remote
stub to step through an address range itself, without GDB
involvemement at each single-step.
qXfer:libraries-svr4:read's annex
The previously unused annex of the qXfer:libraries-svr4:read packet
is now used to support passing an argument list. The remote stub
reports support for this argument list to GDB's qSupported query.
The defined arguments are "start" and "prev", used to reduce work
necessary for library list updating, resulting in significant
* New features in the GDB remote stub, GDBserver
** GDBserver now supports target-assisted range stepping. Currently
enabled on x86/x86_64 GNU/Linux targets.
** GDBserver now adds element 'tvar' in the XML in the reply to
'qXfer:traceframe-info:read'. It has the id of the collected
trace state variables.
** GDBserver now supports hardware watchpoints on the MIPS GNU/Linux
* New 'z' formatter for printing and examining memory, this displays the
value as hexadecimal zero padded on the left to the size of the type.
* GDB can now use Windows x64 unwinding data.
* The "set remotebaud" command has been replaced by "set serial baud".
Similarly, "show remotebaud" has been replaced by "show serial baud".
The "set remotebaud" and "show remotebaud" commands are still available
to provide backward compatibility with older versions of GDB.
*** Changes in GDB 7.6
* Target record has been renamed to record-full.
Record/replay is now enabled with the "record full" command.
This also affects settings that are associated with full record/replay
that have been moved from "set/show record" to "set/show record full":
set|show record full insn-number-max
set|show record full stop-at-limit
set|show record full memory-query
* A new record target "record-btrace" has been added. The new target
uses hardware support to record the control-flow of a process. It
does not support replaying the execution, but it implements the
below new commands for investigating the recorded execution log.
This new recording method can be enabled using:
record btrace
The "record-btrace" target is only available on Intel Atom processors
and requires a Linux kernel 2.6.32 or later.
* Two new commands have been added for record/replay to give information
about the recorded execution without having to replay the execution.
The commands are only supported by "record btrace".
record instruction-history prints the execution history at
instruction granularity
record function-call-history prints the execution history at
function granularity
* New native configurations
ARM AArch64 GNU/Linux aarch64*-*-linux-gnu
FreeBSD/powerpc powerpc*-*-freebsd
x86_64/Cygwin x86_64-*-cygwin*
Tilera TILE-Gx GNU/Linux tilegx*-*-linux-gnu
* New targets
ARM AArch64 aarch64*-*-elf
ARM AArch64 GNU/Linux aarch64*-*-linux
Lynx 178 PowerPC powerpc-*-lynx*178
x86_64/Cygwin x86_64-*-cygwin*
Tilera TILE-Gx GNU/Linux tilegx*-*-linux
* If the configured location of system.gdbinit file (as given by the
--with-system-gdbinit option at configure time) is in the
data-directory (as specified by --with-gdb-datadir at configure
time) or in one of its subdirectories, then GDB will look for the
system-wide init file in the directory specified by the
--data-directory command-line option.
* New command line options:
-nh Disables auto-loading of ~/.gdbinit, but still executes all the
other initialization files, unlike -nx which disables all of them.
* Removed command line options
-epoch This was used by the gdb mode in Epoch, an ancient fork of
* The 'ptype' and 'whatis' commands now accept an argument to control
type formatting.
* 'info proc' now works on some core files.
* Python scripting
** Vectors can be created with gdb.Type.vector.
** Python's atexit.register now works in GDB.
** Types can be pretty-printed via a Python API.
** Python 3 is now supported (in addition to Python 2.4 or later)
** New class gdb.Architecture exposes GDB's internal representation
of architecture in the Python API.
** New method Frame.architecture returns the gdb.Architecture object
corresponding to the frame's architecture.
* New Python-based convenience functions:
** $_memeq(buf1, buf2, length)
** $_streq(str1, str2)
** $_strlen(str)
** $_regex(str, regex)
* The 'cd' command now defaults to using '~' (the home directory) if not
given an argument.
* The C++ ABI now defaults to the GNU v3 ABI. This has been the
default for GCC since November 2000.
* The command 'forward-search' can now be abbreviated as 'fo'.
* The command 'info tracepoints' can now display 'installed on target'
or 'not installed on target' for each non-pending location of tracepoint.
* New configure options
By default, development versions are built with -lmcheck on hosts
that support it, in order to help track memory corruption issues.
Release versions, on the other hand, are built without -lmcheck
by default. The --enable-libmcheck/--disable-libmcheck configure
options allow the user to override that default.
This configure option allows the user to build GDB with
libbabeltrace using which GDB can read Common Trace Format data.
* New commands (for set/show, see "New options" below)
catch signal
Catch signals. This is similar to "handle", but allows commands and
conditions to be attached.
maint info bfds
List the BFDs known to GDB.
python-interactive [command]
pi [command]
Start a Python interactive prompt, or evaluate the optional command
and print the result of expressions.
py [command]
"py" is a new alias for "python".
enable type-printer [name]...
disable type-printer [name]...
Enable or disable type printers.
* Removed commands
** For the Renesas Super-H architecture, the "regs" command has been removed
(has been deprecated in GDB 7.5), and "info all-registers" should be used
* New options
set print type methods (on|off)
show print type methods
Control whether method declarations are displayed by "ptype".
The default is to show them.
set print type typedefs (on|off)
show print type typedefs
Control whether typedef definitions are displayed by "ptype".
The default is to show them.
set filename-display basename|relative|absolute
show filename-display
Control the way in which filenames is displayed.
The default is "relative", which preserves previous behavior.
set trace-buffer-size
show trace-buffer-size
Request target to change the size of trace buffer.
set remote trace-buffer-size-packet auto|on|off
show remote trace-buffer-size-packet
Control the use of the remote protocol `QTBuffer:size' packet.
set debug aarch64
show debug aarch64
Control display of debugging messages related to ARM AArch64.
The default is off.
set debug coff-pe-read
show debug coff-pe-read
Control display of debugging messages related to reading of COFF/PE
exported symbols.
set debug mach-o
show debug mach-o
Control display of debugging messages related to Mach-O symbols
set debug notification
show debug notification
Control display of debugging info for async remote notification.
* MI changes
** Command parameter changes are now notified using new async record
** Trace frame changes caused by command "tfind" are now notified using
new async record "=traceframe-changed".
** The creation, deletion and modification of trace state variables
are now notified using new async records "=tsv-created",
"=tsv-deleted" and "=tsv-modified".
** The start and stop of process record are now notified using new
async record "=record-started" and "=record-stopped".
** Memory changes are now notified using new async record
** The data-disassemble command response will include a "fullname" field
containing the absolute file name when source has been requested.
** New optional parameter COUNT added to the "-data-write-memory-bytes"
command, to allow pattern filling of memory areas.
** New commands "-catch-load"/"-catch-unload" added for intercepting
library load/unload events.
** The response to breakpoint commands and breakpoint async records
includes an "installed" field containing a boolean state about each
non-pending tracepoint location is whether installed on target or not.
** Output of the "-trace-status" command includes a "trace-file" field
containing the name of the trace file being examined. This field is
optional, and only present when examining a trace file.
** The "fullname" field is now always present along with the "file" field,
even if the file cannot be found by GDB.
* GDB now supports the "mini debuginfo" section, .gnu_debugdata.
You must have the LZMA library available when configuring GDB for this
feature to be enabled. For more information, see:
* New remote packets
Set the size of trace buffer. The remote stub reports support for this
packet to gdb's qSupported query.
Enable Branch Trace Store (BTS)-based branch tracing for the current
thread. The remote stub reports support for this packet to gdb's
qSupported query.
Disable branch tracing for the current thread. The remote stub reports
support for this packet to gdb's qSupported query.
Read the traced branches for the current thread. The remote stub
reports support for this packet to gdb's qSupported query.
*** Changes in GDB 7.5
* GDB now supports x32 ABI. Visit <>
for more x32 ABI info.
* GDB now supports access to MIPS DSP registers on Linux targets.
* GDB now supports debugging microMIPS binaries.
* The "info os" command on GNU/Linux can now display information on
several new classes of objects managed by the operating system:
"info os procgroups" lists process groups
"info os files" lists file descriptors
"info os sockets" lists internet-domain sockets
"info os shm" lists shared-memory regions
"info os semaphores" lists semaphores
"info os msg" lists message queues
"info os modules" lists loaded kernel modules
* GDB now has support for SDT (Static Defined Tracing) probes. Currently,
the only implemented backend is for SystemTap probes (<sys/sdt.h>). You
can set a breakpoint using the new "-probe, "-pstap" or "-probe-stap"
options and inspect the probe arguments using the new $_probe_arg family
of convenience variables. You can obtain more information about SystemTap
in <>.
* GDB now supports reversible debugging on ARM, it allows you to
debug basic ARM and THUMB instructions, and provides
record/replay support.
* The option "symbol-reloading" has been deleted as it is no longer used.
* Python scripting
** GDB commands implemented in Python can now be put in command class
** The "maint set python print-stack on|off" is now deleted.
** A new class, gdb.printing.FlagEnumerationPrinter, can be used to
apply "flag enum"-style pretty-printing to any enum.
** gdb.lookup_symbol can now work when there is no current frame.
** gdb.Symbol now has a 'line' attribute, holding the line number in
the source at which the symbol was defined.
** gdb.Symbol now has the new attribute 'needs_frame' and the new
method 'value'. The former indicates whether the symbol needs a
frame in order to compute its value, and the latter computes the
symbol's value.
** A new method 'referenced_value' on gdb.Value objects which can
dereference pointer as well as C++ reference values.
** New methods 'global_block' and 'static_block' on gdb.Symtab objects
which return the global and static blocks (as gdb.Block objects),
of the underlying symbol table, respectively.
** New function gdb.find_pc_line which returns the gdb.Symtab_and_line
object associated with a PC value.
** gdb.Symtab_and_line has new attribute 'last' which holds the end
of the address range occupied by code for the current source line.
* Go language support.
GDB now supports debugging programs written in the Go programming
* GDBserver now supports stdio connections.
E.g. (gdb) target remote | ssh myhost gdbserver - hello
* The binary "gdbtui" can no longer be built or installed.
Use "gdb -tui" instead.
* GDB will now print "flag" enums specially. A flag enum is one where
all the enumerator values have no bits in common when pairwise
"and"ed. When printing a value whose type is a flag enum, GDB will
show all the constants, e.g., for enum E { ONE = 1, TWO = 2}:
(gdb) print (enum E) 3
$1 = (ONE | TWO)
* The filename part of a linespec will now match trailing components
of a source file name. For example, "break gcc/expr.c:1000" will
now set a breakpoint in build/gcc/expr.c, but not
* The "info proc" and "generate-core-file" commands will now also
work on remote targets connected to GDBserver on Linux.
* The command "info catch" has been removed. It has been disabled
since December 2007.
* The "catch exception" and "catch assert" commands now accept
a condition at the end of the command, much like the "break"
command does. For instance:
(gdb) catch exception Constraint_Error if Barrier = True
Previously, it was possible to add a condition to such catchpoints,
but it had to be done as a second step, after the catchpoint had been
created, using the "condition" command.
* The "info static-tracepoint-marker" command will now also work on
native Linux targets with in-process agent.
* GDB can now set breakpoints on inlined functions.
* The .gdb_index section has been updated to include symbols for
inlined functions. GDB will ignore older .gdb_index sections by
default, which could cause symbol files to be loaded more slowly
until their .gdb_index sections can be recreated. The new command
"set use-deprecated-index-sections on" will cause GDB to use any older
.gdb_index sections it finds. This will restore performance, but the
ability to set breakpoints on inlined functions will be lost in symbol
files with older .gdb_index sections.
The .gdb_index section has also been updated to record more information
about each symbol. This speeds up the "info variables", "info functions"
and "info types" commands when used with programs having the .gdb_index
section, as well as speeding up debugging with shared libraries using
the .gdb_index section.
* Ada support for GDB/MI Variable Objects has been added.
* GDB can now support 'breakpoint always-inserted mode' in 'record'
* MI changes
** New command -info-os is the MI equivalent of "info os".
** Output logs ("set logging" and related) now include MI output.
* New commands
** "set use-deprecated-index-sections on|off"
"show use-deprecated-index-sections on|off"
Controls the use of deprecated .gdb_index sections.
** "catch load" and "catch unload" can be used to stop when a shared
library is loaded or unloaded, respectively.
** "enable count" can be used to auto-disable a breakpoint after
several hits.
** "info vtbl" can be used to show the virtual method tables for
C++ and Java objects.
** "explore" and its sub commands "explore value" and "explore type"
can be used to recursively explore values and types of
expressions. These commands are available only if GDB is
configured with '--with-python'.
** "info auto-load" shows status of all kinds of auto-loaded files,
"info auto-load gdb-scripts" shows status of auto-loading GDB canned
sequences of commands files, "info auto-load python-scripts"
shows status of auto-loading Python script files,
"info auto-load local-gdbinit" shows status of loading init file
(.gdbinit) from current directory and "info auto-load libthread-db" shows
status of inferior specific thread debugging shared library loading.
** "info auto-load-scripts", "set auto-load-scripts on|off"
and "show auto-load-scripts" commands have been deprecated, use their
"info auto-load python-scripts", "set auto-load python-scripts on|off"
and "show auto-load python-scripts" counterparts instead.
** "dprintf location,format,args..." creates a dynamic printf, which
is basically a breakpoint that does a printf and immediately
resumes your program's execution, so it is like a printf that you
can insert dynamically at runtime instead of at compiletime.
** "set print symbol"
"show print symbol"
Controls whether GDB attempts to display the symbol, if any,
corresponding to addresses it prints. This defaults to "on", but
you can set it to "off" to restore GDB's previous behavior.
* Deprecated commands
** For the Renesas Super-H architecture, the "regs" command has been
deprecated, and "info all-registers" should be used instead.
* New targets
Renesas RL78 rl78-*-elf
HP OpenVMS ia64 ia64-hp-openvms*
* GDBserver supports evaluation of breakpoint conditions. When
support is advertised by GDBserver, GDB may be told to send the
breakpoint conditions in bytecode form to GDBserver. GDBserver
will only report the breakpoint trigger to GDB when its condition
evaluates to true.
* New options
set mips compression
show mips compression
Select the compressed ISA encoding used in functions that have no symbol
information available. The encoding can be set to either of:
and is updated automatically from ELF file flags if available.
set breakpoint condition-evaluation
show breakpoint condition-evaluation
Control whether breakpoint conditions are evaluated by GDB ("host") or by
GDBserver ("target"). Default option "auto" chooses the most efficient
available mode.
This option can improve debugger efficiency depending on the speed of the
set auto-load off
Disable auto-loading globally.
show auto-load
Show auto-loading setting of all kinds of auto-loaded files.
set auto-load gdb-scripts on|off
show auto-load gdb-scripts
Control auto-loading of GDB canned sequences of commands files.
set auto-load python-scripts on|off
show auto-load python-scripts
Control auto-loading of Python script files.
set auto-load local-gdbinit on|off
show auto-load local-gdbinit
Control loading of init file (.gdbinit) from current directory.
set auto-load libthread-db on|off
show auto-load libthread-db
Control auto-loading of inferior specific thread debugging shared library.
set auto-load scripts-directory <dir1>[:<dir2>...]
show auto-load scripts-directory
Set a list of directories from which to load auto-loaded scripts.
Automatically loaded Python scripts and GDB scripts are located in one
of the directories listed by this option.
The delimiter (':' above) may differ according to the host platform.
set auto-load safe-path <dir1>[:<dir2>...]
show auto-load safe-path
Set a list of directories from which it is safe to auto-load files.
The delimiter (':' above) may differ according to the host platform.
set debug auto-load on|off
show debug auto-load
Control display of debugging info for auto-loading the files above.
set dprintf-style gdb|call|agent
show dprintf-style
Control the way in which a dynamic printf is performed; "gdb"
requests a GDB printf command, while "call" causes dprintf to call a
function in the inferior. "agent" requests that the target agent
(such as GDBserver) do the printing.
set dprintf-function <expr>
show dprintf-function
set dprintf-channel <expr>
show dprintf-channel
Set the function and optional first argument to the call when using
the "call" style of dynamic printf.
set disconnected-dprintf on|off
show disconnected-dprintf
Control whether agent-style dynamic printfs continue to be in effect
after GDB disconnects.
* New configure options
Configure default value for the 'set auto-load scripts-directory'
setting above. It defaults to '$debugdir:$datadir/auto-load',
$debugdir representing global debugging info directories (available
via 'show debug-file-directory') and $datadir representing GDB's data
directory (available via 'show data-directory').
Configure default value for the 'set auto-load safe-path' setting
above. It defaults to the --with-auto-load-dir setting.
Set 'set auto-load safe-path' to '/', effectively disabling this
security feature.
* New remote packets
z0/z1 conditional breakpoints extension
The z0/z1 breakpoint insertion packets have been extended to carry
a list of conditional expressions over to the remote stub depending on the
condition evaluation mode. The use of this extension can be controlled
via the "set remote conditional-breakpoints-packet" command.
Specify the signals which the remote stub may pass to the debugged
program without GDB involvement.
* New command line options
--init-command=FILE, -ix Like --command, -x but execute it
before loading inferior.
--init-eval-command=COMMAND, -iex Like --eval-command=COMMAND, -ex but
execute it before loading inferior.
*** Changes in GDB 7.4
* GDB now handles ambiguous linespecs more consistently; the existing
FILE:LINE support has been expanded to other types of linespecs. A
breakpoint will now be set on all matching locations in all
inferiors, and locations will be added or removed according to
inferior changes.
* GDB now allows you to skip uninteresting functions and files when
stepping with the "skip function" and "skip file" commands.
* GDB has two new commands: "set remote hardware-watchpoint-length-limit"
and "show remote hardware-watchpoint-length-limit". These allows to
set or show the maximum length limit (in bytes) of a remote
target hardware watchpoint.
This allows e.g. to use "unlimited" hardware watchpoints with the
gdbserver integrated in Valgrind version >= 3.7.0. Such Valgrind
watchpoints are slower than real hardware watchpoints but are
significantly faster than gdb software watchpoints.
* Python scripting
** The register_pretty_printer function in module gdb.printing now takes
an optional `replace' argument. If True, the new printer replaces any
existing one.
** The "maint set python print-stack on|off" command has been
deprecated and will be deleted in GDB 7.5.
A new command: "set python print-stack none|full|message" has
replaced it. Additionally, the default for "print-stack" is
now "message", which just prints the error message without
the stack trace.
** A prompt substitution hook (prompt_hook) is now available to the
Python API.
** A new Python module, gdb.prompt has been added to the GDB Python
modules library. This module provides functionality for
escape sequences in prompts (used by set/show
extended-prompt). These escape sequences are replaced by their
corresponding value.
** Python commands and convenience-functions located in
'data-directory'/python/gdb/command and
'data-directory'/python/gdb/function are now automatically loaded
on GDB start-up.
** Blocks now provide four new attributes. global_block and
static_block will return the global and static blocks
respectively. is_static and is_global are boolean attributes
that indicate if the block is one of those two types.
** Symbols now provide the "type" attribute, the type of the symbol.
** The "gdb.breakpoint" function has been deprecated in favor of
** A new class "gdb.FinishBreakpoint" is provided to catch the return
of a function. This class is based on the "finish" command
available in the CLI.
** Type objects for struct and union types now allow access to
the fields using standard Python dictionary (mapping) methods.
For example, "some_type['myfield']" now works, as does
** A new event "gdb.new_objfile" has been added, triggered by loading a
new object file.
** A new function, "deep_items" has been added to the gdb.types
module in the GDB Python modules library. This function returns
an iterator over the fields of a struct or union type. Unlike
the standard Python "iteritems" method, it will recursively traverse
any anonymous fields.
* MI changes
** "*stopped" events can report several new "reason"s, such as
** Breakpoint changes are now notified using new async records, like
** New command -ada-task-info.
* libthread-db-search-path now supports two special values: $sdir and $pdir.
$sdir specifies the default system locations of shared libraries.
$pdir specifies the directory where the libpthread used by the application
GDB no longer looks in $sdir and $pdir after it has searched the directories
mentioned in libthread-db-search-path. If you want to search those
directories, they must be specified in libthread-db-search-path.
The default value of libthread-db-search-path on GNU/Linux and Solaris
systems is now "$sdir:$pdir".
$pdir is not supported by gdbserver, it is currently ignored.
$sdir is supported by gdbserver.
* New configure option --with-iconv-bin.
When using the internationalization support like the one in the GNU C
library, GDB will invoke the "iconv" program to get a list of supported
character sets. If this program lives in a non-standard location, one can
use this option to specify where to find it.
* When natively debugging programs on PowerPC BookE processors running
a Linux kernel version 2.6.34 or later, GDB supports masked hardware
watchpoints, which specify a mask in addition to an address to watch.
The mask specifies that some bits of an address (the bits which are
reset in the mask) should be ignored when matching the address accessed
by the inferior against the watchpoint address. See the "PowerPC Embedded"
section in the user manual for more details.
* The new option --once causes GDBserver to stop listening for connections once
the first connection is made. The listening port used by GDBserver will
become available after that.
* New commands "info macros" and "alias" have been added.
* New function parameters suffix @entry specifies value of function parameter
at the time the function got called. Entry values are available only since
gcc version 4.7.
* New commands
"!" is now an alias of the "shell" command.
Note that no space is needed between "!" and SHELL COMMAND.
* Changed commands
The watch command now supports the mask argument which allows creation
of masked watchpoints, if the current architecture supports this feature.
info auto-load-scripts [REGEXP]
This command was formerly named "maintenance print section-scripts".
It is now generally useful and is no longer a maintenance-only command.
info macro [-all] [--] MACRO
The info macro command has new options `-all' and `--'. The first for
printing all definitions of a macro. The second for explicitly specifying
the end of arguments and the beginning of the macro name in case the macro
name starts with a hyphen.
collect[/s] EXPRESSIONS
The tracepoint collect command now takes an optional modifier "/s"
that directs it to dereference pointer-to-character types and
collect the bytes of memory up to a zero byte. The behavior is
similar to what you see when you use the regular print command on a
string. An optional integer following the "/s" sets a bound on the
number of bytes that will be collected.
tstart [NOTES]
The trace start command now interprets any supplied arguments as a
note to be recorded with the trace run, with an effect similar to
setting the variable trace-notes.
tstop [NOTES]
The trace stop command now interprets any arguments as a note to be
mentioned along with the tstatus report that the trace was stopped
with a command. The effect is similar to setting the variable
* Tracepoints can now be enabled and disabled at any time after a trace
experiment has been started using the standard "enable" and "disable"
commands. It is now possible to start a trace experiment with no enabled
tracepoints; GDB will display a warning, but will allow the experiment to
begin, assuming that tracepoints will be enabled as needed while the trace
is running.
* Fast tracepoints on 32-bit x86-architectures can now be placed at
locations with 4-byte instructions, when they were previously
limited to locations with instructions of 5 bytes or longer.
* New options
set debug dwarf2-read
show debug dwarf2-read
Turns on or off display of debugging messages related to reading
DWARF debug info. The default is off.
set debug symtab-create
show debug symtab-create
Turns on or off display of debugging messages related to symbol table
creation. The default is off.
set extended-prompt
show extended-prompt
Set the GDB prompt, and allow escape sequences to be inserted to
display miscellaneous information (see 'help set extended-prompt'
for the list of sequences). This prompt (and any information
accessed through the escape sequences) is updated every time the
prompt is displayed.
set print entry-values (both|compact|default|if-needed|no|only|preferred)
show print entry-values
Set printing of frame argument values at function entry. In some cases
GDB can determine the value of function argument which was passed by the
function caller, even if the value was modified inside the called function.
set debug entry-values
show debug entry-values
Control display of debugging info for determining frame argument values at
function entry and virtual tail call frames.
set basenames-may-differ
show basenames-may-differ
Set whether a source file may have multiple base names.
(A "base name" is the name of a file with the directory part removed.
Example: The base name of "/home/user/hello.c" is "hello.c".)
If set, GDB will canonicalize file names (e.g., expand symlinks)
before comparing them. Canonicalization is an expensive operation,
but it allows the same file be known by more than one base name.
If not set (the default), all source files are assumed to have just
one base name, and gdb will do file name comparisons more efficiently.
set trace-user
show trace-user
set trace-notes
show trace-notes
Set a user name and notes for the current and any future trace runs.
This is useful for long-running and/or disconnected traces, to
inform others (or yourself) as to who is running the trace, supply
contact information, or otherwise explain what is going on.