blob: 2f5d5ebbcef192164a2c0a19633aa128dd7cd8ed [file] [log] [blame]
What has changed in GDB?
(Organized release by release)
*** Changes since GDB 15
* GDB now supports printing of ptwrite payloads from the Intel Processor
Trace during 'record instruction-history', 'record function-call-history'
and all stepping commands. The payload is also accessible in Python as a
RecordAuxiliary object. Printing is customizable via a ptwrite filter
function in Python. By default, the raw ptwrite payload is printed for
each ptwrite that is encountered.
* Python API
** Added gdb.record.clear. Clears the trace data of the current recording.
This forces re-decoding of the trace for successive commands.
* Debugger Adapter Protocol changes
** The "scopes" request will now return a scope holding global
variables from the stack frame's compilation unit.
** The "scopes" request will return a "returnValue" scope holding
the return value from the latest "stepOut" command, when
appropriate.
* For ARM targets, the offset of the pc in the jmp_buf has been fixed to match
glibc 2.20 and later. This should only matter when not using libc probes.
This may cause breakage when using an incompatible libc, like uclibc or
newlib, or an older glibc.
* MTE (Memory Tagging Extension) debugging is now supported on AArch64 baremetal
targets.
* Remove support (native and remote) for QNX Neutrino (triplet
`i[3456]86-*-nto*`).
* In a record session, when a forward emulation reaches the end of the reverse
history, the warning message has been changed to indicate that the end of the
history has been reached. It also specifies that the forward execution can
continue, and the recording will also continue.
* New commands
maintenance info inline-frames [ADDRESS]
New command which displays GDB's inline-frame information for the
current address, or for ADDRESS if specified. The output identifies
inlined frames which start at the specified address.
maintenance info blocks [ADDRESS]
New command which displays information about all of the blocks at
ADDRESS, or at the current address if ADDRESS is not given. Blocks
are listed starting at the inner global block out to the most inner
block.
* New remote packets
vFile:stat
Return information about files on the remote system. Like
vFile:fstat but takes a filename rather than an open file
descriptor.
*** Changes in GDB 15
* The MPX commands "show/set mpx bound" have been deprecated, as Intel
listed MPX as removed in 2019.
* Building GDB and GDBserver now requires a C++17 compiler.
For example, GCC 9 or later.
* GDB index now contains information about the main function. This speeds up
startup when it is being used for some large binaries.
* On hosts where threading is available, DWARF reading is now done in
the background, resulting in faster startup. This can be controlled
using "maint set dwarf synchronous".
* Changed commands
disassemble
Attempting to use both the 'r' and 'b' flags with the disassemble
command will now give an error. Previously the 'b' flag would
always override the 'r' flag.
gcore
generate-core-file
GDB now generates sparse core files, on systems that support it.
maintenance info line-table
Add an EPILOGUE-BEGIN column to the output of the command. It indicates
if the line is considered the start of the epilgoue, and thus a point at
which the frame can be considered destroyed.
set unwindonsignal on|off
show unwindonsignal
These commands are now aliases for the new set/show unwind-on-signal.
target record-full
This command now gives an error if any unexpected arguments are
found after the command.
list .
When using the command "list ." in a location that has no debug information
or no file loaded, GDB now says that there is no debug information to print
lines. This makes it more obvious that there is no information, as opposed
to implying there is no inferior loaded.
* New commands
info missing-debug-handler
List all the registered missing debug handlers.
enable missing-debug-handler LOCUS HANDLER
disable missing-debug-handler LOCUS HANDLER
Enable or disable a missing debug handler with a name matching the
regular expression HANDLER, in LOCUS.
LOCUS can be 'global' to operate on global missing debug handler,
'progspace' to operate on handlers within the current program space,
or can be a regular expression which is matched against the filename
of the primary executable in each program space.
maintenance info linux-lwps
List all LWPs under control of the linux-nat target.
set remote thread-options-packet
show remote thread-options-packet
Set/show the use of the thread options packet.
set direct-call-timeout SECONDS
show direct-call-timeout
set indirect-call-timeout SECONDS
show indirect-call-timeout
These new settings can be used to limit how long GDB will wait for
an inferior function call to complete. The direct timeout is used
for inferior function calls from e.g. 'call' and 'print' commands,
while the indirect timeout is used for inferior function calls from
within a conditional breakpoint expression.
The default for the direct timeout is unlimited, while the default
for the indirect timeout is 30 seconds.
These timeouts will only have an effect for targets that are
operating in async mode. For non-async targets the timeouts are
ignored, GDB will wait indefinitely for an inferior function to
complete, unless interrupted by the user using Ctrl-C.
set unwind-on-timeout on|off
show unwind-on-timeout
These commands control whether GDB should unwind the stack when a
timeout occurs during an inferior function call. The default is
off, in which case the inferior will remain in the frame where the
timeout occurred. When on, GDB will unwind the stack removing the
dummy frame that was added for the inferior call, and restoring the
inferior state to how it was before the inferior call started.
set unwind-on-signal on|off
show unwind-on-signal
These new commands replaces the existing set/show unwindonsignal. The
old command is maintained as an alias.
* New features in the GDB remote stub, GDBserver
** The --remote-debug and --event-loop-debug command line options
have been removed.
** The --debug command line option now takes an optional comma
separated list of components to emit debug for. The currently
supported components are: all, threads, event-loop, and remote.
If no components are given then threads is assumed.
** The 'monitor set remote-debug' and 'monitor set event-loop-debug'
command have been removed.
** The 'monitor set debug 0|1' command has been extended to take a
component name, e.g.: 'monitor set debug COMPONENT off|on'.
Possible component names are: all, threads, event-loop, and
remote.
* Python API
** New function gdb.notify_mi(NAME, DATA), that emits custom
GDB/MI async notification.
** New read/write attribute gdb.Value.bytes that contains a bytes
object holding the contents of this value.
** New module gdb.missing_debug that facilitates dealing with
objfiles that are missing any debug information.
** New function gdb.missing_debug.register_handler that can register
an instance of a sub-class of gdb.missing_debug.MissingDebugInfo
as a handler for objfiles that are missing debug information.
** New class gdb.missing_debug.MissingDebugInfo which can be
sub-classed to create handlers for objfiles with missing debug
information.
** Stop events now have a "details" attribute that holds a
dictionary that carries the same information as an MI "*stopped"
event.
** New function gdb.interrupt(), that interrupts GDB as if the user
typed control-c.
** New gdb.InferiorThread.ptid_string attribute. This read-only
attribute contains the string that appears in the 'Target Id'
column of the 'info threads' command output.
** It is no longer possible to create new gdb.Progspace object using
'gdb.Progspace()', this will result in a TypeError. Progspace
objects can still be obtained through calling other API
functions, for example 'gdb.current_progspace()'.
** User defined attributes can be added to a gdb.Inferior object,
these will be stored in the object's new Inferior.__dict__
attribute.
** User defined attributes can be added to a gdb.InferiorThread
object, these will be stored in the object's new
InferiorThread.__dict__ attribute.
** New constants gdb.SYMBOL_TYPE_DOMAIN, gdb.SYMBOL_FUNCTION_DOMAIN,
and gdb.SEARCH_*_DOMAIN corresponding to all the existing symbol
domains. Symbol lookup can now search in multiple domains at
once, and can also narrowly search for just a type or function.
* Debugger Adapter Protocol changes
** GDB now emits the "process" event.
** GDB now supports the "cancel" request.
** The "attach" request now supports specifying the program.
** New command "set debug dap-log-level" controls DAP logging.
** The "set debug dap-log-file" command is now documented. This
command was available in GDB 14 but not documented.
* Guile API
** New constants SYMBOL_TYPE_DOMAIN, SYMBOL_FUNCTION_DOMAIN, and
SEARCH_*_DOMAIN corresponding to all the existing symbol domains.
Symbol lookup can now search in multiple domains at once, and can
also narrowly search for just a type or function.
* New remote packets
New stop reason: clone
Indicates that a clone system call was executed.
QThreadOptions
Enable/disable optional event reporting, on a per-thread basis.
Currently supported options are GDB_THREAD_OPTION_CLONE, to enable
clone event reporting, and GDB_THREAD_OPTION_EXIT to enable thread
exit event reporting.
QThreadOptions in qSupported
The qSupported packet allows GDB to inform the stub it supports the
QThreadOptions packet, and the qSupported response can contain the
set of thread options the remote stub supports.
qIsAddressTagged
This new packet allows GDB to query the stub about a given address to check
if it is tagged or not. Many memory tagging-related GDB commands need to
perform this check before they read/write the allocation tag related to an
address. Currently, however, this is done through a 'vFile' request to read
the file /proc/<PID>/smaps and check if the address is in a region reported
as memory tagged. Since not all targets have a notion of what the smaps
file is about, this new packet provides a more generic way to perform such
a check.
*** Changes in GDB 14
* GDB now supports the AArch64 Scalable Matrix Extension 2 (SME2), which
includes a new 512 bit lookup table register named ZT0.
* GDB now supports the AArch64 Scalable Matrix Extension (SME), which includes
a new matrix register named ZA, a new thread register TPIDR2 and a new vector
length register SVG (streaming vector granule). GDB also supports tracking
ZA state across signal frames.
Some features are still under development or are dependent on ABI specs that
are still in alpha stage. For example, manual function calls with ZA state
don't have any special handling, and tracking of SVG changes based on
DWARF information is still not implemented, but there are plans to do so in
the future.
* GDB now recognizes the NO_COLOR environment variable and disables
styling according to the spec. See https://no-color.org/.
Styling can be re-enabled with "set style enabled on".
* The AArch64 'org.gnu.gdb.aarch64.pauth' Pointer Authentication feature string
has been deprecated in favor of the 'org.gnu.gdb.aarch64.pauth_v2' feature
string.
* GDB now has some support for integer types larger than 64 bits.
* Removed targets and native configurations
GDB no longer supports AIX 4.x, AIX 5.x and AIX 6.x. The minimum supported
AIX version is now AIX 7.1.
* Multi-target feature configuration
GDB now supports the individual configuration of remote targets' feature
sets. Based on the current selection of a target, the commands 'set remote
<name>-packet (on|off|auto)' and 'show remote <name>-packet' can be used to
configure a target's feature packet and to display its configuration,
respectively.
The individual packet sizes can be configured and shown using the commands
** 'set remote memory-read-packet-size (number of bytes|fixed|limit)'
** 'set remote memory-write-packet-size (number of bytes|fixed|limit)'
** 'show remote memory-read-packet-size'
** 'show remote memory-write-packet-size'.
The configuration of the packet itself, as well as the size of a memory-read
or memory-write packet applies to the currently selected target (if
available). If no target is selected, it applies to future remote
connections. Similarly, the show commands print the configuration of the
currently selected target. If no remote target is selected, the default
configuration for future connections is shown.
* GDB has initial built-in support for the Debugger Adapter Protocol.
This support requires that GDB be built with Python scripting
enabled.
* For the break command, multiple uses of the 'thread' or 'task'
keywords will now give an error instead of just using the thread or
task id from the last instance of the keyword. E.g.:
break foo thread 1 thread 2
will now give an error rather than using 'thread 2'.
* For the watch command, multiple uses of the 'task' keyword will now
give an error instead of just using the task id from the last
instance of the keyword. E.g.:
watch my_var task 1 task 2
will now give an error rather than using 'task 2'. The 'thread'
keyword already gave an error when used multiple times with the
watch command, this remains unchanged.
* The 'set print elements' setting now helps when printing large arrays.
If an array would otherwise exceed max-value-size, but 'print elements'
is set such that the size of elements to print is less than or equal
to 'max-value-size', GDB will now still print the array, however only
'max-value-size' worth of data will be added into the value history.
* For both the break and watch commands, it is now invalid to use both
the 'thread' and 'task' keywords within the same command. For
example the following commnds will now give an error:
break foo thread 1 task 1
watch var thread 2 task 3
* The printf command now accepts a '%V' output format which will
format an expression just as the 'print' command would. Print
options can be placed withing '[...]' after the '%V' to modify how
the value is printed. E.g:
printf "%V", some_array
printf "%V[-array-indexes on]", some_array
will print the array without, or with array indexes included, just
as the array would be printed by the 'print' command. This
functionality is also available for dprintf when dprintf-style is
'gdb'.
* When the printf command requires a string to be fetched from the
inferior, GDB now uses the existing 'max-value-size' setting to the
limit the memory allocated within GDB. The default 'max-value-size'
is 64k. To print longer strings you should increase
'max-value-size'.
* The Ada 2022 Enum_Rep and Enum_Val attributes are now supported.
* The Ada 2022 target name symbol ('@') is now supported by the Ada
expression parser.
* The 'list' command now accepts '.' as an argument, which tells GDB to
print the location around the point of execution within the current frame.
If the inferior hasn't started yet, the command will print around the
beginning of the 'main' function.
* Using the 'list' command with no arguments in a situation where the
command would attempt to list past the end of the file now warns the
user that the end of file has been reached, refers the user to the
newly added '.' argument
* Breakpoints can now be inferior-specific. This is similar to the
existing thread-specific breakpoint support. Breakpoint conditions
can include the 'inferior' keyword followed by an inferior id (as
displayed in the 'info inferiors' output). It is invalid to use the
'inferior' keyword with either the 'thread' or 'task' keywords when
creating a breakpoint.
* New convenience function "$_shell", to execute a shell command and
return the result. This lets you run shell commands in expressions.
Some examples:
(gdb) p $_shell("true")
$1 = 0
(gdb) p $_shell("false")
$2 = 1
(gdb) break func if $_shell("some command") == 0
* Configure changes
--additional-debug-dirs=PATHs
Provide a colon-separated list of additional directories to search for
separate debug info. These directories are added to the default value of
the 'debug-file-directory' GDB parameter.
* New commands
set debug breakpoint on|off
show debug breakpoint
Print additional debug messages about breakpoint insertion and removal.
maintenance print record-instruction [ N ]
Print the recorded information for a given instruction. If N is not given
prints how GDB would undo the last instruction executed. If N is negative,
prints how GDB would undo the N-th previous instruction, and if N is
positive, it prints how GDB will redo the N-th following instruction.
maintenance info frame-unwinders
List the frame unwinders currently in effect, starting with the highest
priority.
maintenance wait-for-index-cache
Wait until all pending writes to the index cache have completed.
set always-read-ctf on|off
show always-read-ctf
When off, CTF is only read if DWARF is not present. When on, CTF is
read regardless of whether DWARF is present. Off by default.
info main
Get main symbol to identify entry point into program.
set tui mouse-events [on|off]
show tui mouse-events
When on (default), mouse clicks control the TUI and can be accessed by
Python extensions. When off, mouse clicks are handled by the terminal,
enabling terminal-native text selection.
* MI changes
** MI version 1 has been removed.
** mi now reports 'no-history' as a stop reason when hitting the end of the
reverse execution history.
** When creating a thread-specific breakpoint using the '-p' option,
the -break-insert command would report the 'thread' field twice in
the reply. The content of both fields was always identical. This
has now been fixed; the 'thread' field will be reported just once
for thread-specific breakpoints, or not at all for breakpoints
without a thread restriction. The same is also true for the 'task'
field of an Ada task-specific breakpoint.
** It is no longer possible to create a thread-specific breakpoint for
a thread that doesn't exist using '-break-insert -p ID'. Creating
breakpoints for non-existent threads is not allowed when using the
CLI, that the MI allowed it was a long standing bug, which has now
been fixed.
** The '--simple-values' argument to the '-stack-list-arguments',
'-stack-list-locals', '-stack-list-variables', and '-var-list-children'
commands now takes reference types into account: that is, a value is now
considered simple if it is neither an array, structure, or union, nor a
reference to an array, structure, or union. (Previously all references were
considered simple.) Support for this feature can be verified by using the
'-list-features' command, which should contain "simple-values-ref-types".
** The -break-insert command now accepts a '-g thread-group-id' option
to allow for the creation of inferior-specific breakpoints.
** The bkpt tuple, which appears in breakpoint-created notifications,
and in the result of the -break-insert command can now include an
optional 'inferior' field for both the main breakpoint, and each
location, when the breakpoint is inferior-specific.
* Python API
** gdb.ThreadExitedEvent added. Emits a ThreadEvent.
** The gdb.unwinder.Unwinder.name attribute is now read-only.
** The name argument passed to gdb.unwinder.Unwinder.__init__ must
now be of type 'str' otherwise a TypeError will be raised.
** The gdb.unwinder.Unwinder.enabled attribute can now only accept
values of type 'bool'. Changing this attribute will now
invalidate GDB's frame-cache, which means GDB will need to
rebuild its frame-cache when next required - either with, or
without the particular unwinder, depending on how 'enabled' was
changed.
** New methods added to the gdb.PendingFrame class. These methods
have the same behaviour as the corresponding methods on
gdb.Frame. The new methods are:
- gdb.PendingFrame.name: Return the name for the frame's
function, or None.
- gdb.PendingFrame.is_valid: Return True if the pending frame
object is valid.
- gdb.PendingFrame.pc: Return the $pc register value for this
frame.
- gdb.PendingFrame.language: Return a string containing the
language for this frame, or None.
- gdb.PendingFrame.find_sal: Return a gdb.Symtab_and_line
object for the current location within the pending frame, or
None.
- gdb.PendingFrame.block: Return a gdb.Block for the current
pending frame, or None.
- gdb.PendingFrame.function: Return a gdb.Symbol for the
current pending frame, or None.
** The frame-id passed to gdb.PendingFrame.create_unwind_info can
now use either an integer or a gdb.Value object for each of its
'sp', 'pc', and 'special' attributes.
** A new class gdb.unwinder.FrameId has been added. Instances of
this class are constructed with 'sp' (stack-pointer) and 'pc'
(program-counter) values, and can be used as the frame-id when
calling gdb.PendingFrame.create_unwind_info.
** It is now no longer possible to sub-class the
gdb.disassembler.DisassemblerResult type.
** The Disassembler API from the gdb.disassembler module has been
extended to include styling support:
- The DisassemblerResult class can now be initialized with a list
of parts. Each part represents part of the disassembled
instruction along with the associated style information. This
list of parts can be accessed with the new
DisassemblerResult.parts property.
- New constants gdb.disassembler.STYLE_* representing all the
different styles part of an instruction might have.
- New methods DisassembleInfo.text_part and
DisassembleInfo.address_part which are used to create the new
styled parts of a disassembled instruction.
- Changes are backwards compatible, the older API can still be
used to disassemble instructions without styling.
** New function gdb.execute_mi(COMMAND, [ARG]...), that invokes a
GDB/MI command and returns the output as a Python dictionary.
** New function gdb.block_signals(). This returns a context manager
that blocks any signals that GDB needs to handle itself.
** New class gdb.Thread. This is a subclass of threading.Thread
that calls gdb.block_signals in its "start" method.
** gdb.parse_and_eval now has a new "global_context" parameter.
This can be used to request that the parse only examine global
symbols.
** gdb.Inferior now has a new "arguments" attribute. This holds the
command-line arguments to the inferior, if known.
** gdb.Inferior now has a new "main_name" attribute. This holds the
name of the inferior's "main", if known.
** gdb.Inferior now has new methods "clear_env", "set_env", and
"unset_env". These can be used to modify the inferior's
environment before it is started.
** gdb.Value now has the 'assign' method.
** gdb.Value now has the 'to_array' method. This converts an
array-like Value to an array.
** gdb.Progspace now has the new method "objfile_for_address". This
returns the gdb.Objfile, if any, that covers a given address.
** gdb.Breakpoint now has an "inferior" attribute. If the
Breakpoint object is inferior specific then this attribute holds
the inferior-id (an integer). If the Breakpoint object is not
inferior specific, then this field contains None. This field can
be written too.
** gdb.Type now has the "is_array_like" and "is_string_like"
methods. These reflect GDB's internal idea of whether a type
might be array- or string-like, even if they do not have the
corresponding type code.
** gdb.ValuePrinter is a new class that can be used as the base
class for the result of applying a pretty-printer. As a base
class, it signals to gdb that the printer may implement new
pretty-printer methods.
** New attribute Progspace.symbol_file. This attribute holds the
gdb.Objfile that corresponds to Progspace.filename (when
Progspace.filename is not None), otherwise, this attribute is
itself None.
** New attribute Progspace.executable_filename. This attribute
holds a string containing a file name set by the "exec-file" or
"file" commands, or None if no executable file is set. This
isn't the exact string passed by the user to these commands; the
file name will have been partially resolved to an absolute file
name.
** A new executable_changed event registry is available. This event
emits ExecutableChangedEvent objects, which have 'progspace' (a
gdb.Progspace) and 'reload' (a Boolean) attributes. This event
is emitted when gdb.Progspace.executable_filename changes.
** New event registries gdb.events.new_progspace and
gdb.events.free_progspace, these emit NewProgspaceEvent and
FreeProgspaceEvent event types respectively. Both of these event
types have a single 'progspace' attribute, which is the
gdb.Progspace that is either being added to GDB, or removed from
GDB.
** gdb.LazyString now implements the __str__ method.
** New method gdb.Frame.static_link that returns the outer frame
of a nested function frame.
*** Changes in GDB 13
* MI version 1 is deprecated, and will be removed in GDB 14.
* GDB now supports dumping memory tag data for AArch64 MTE. It also supports
reading memory tag data for AArch64 MTE from core files generated by
the gcore command or the Linux kernel.
When a process uses memory-mapped pages protected by memory tags (for
example, AArch64 MTE), this additional information will be recorded in
the core file in the event of a crash or if GDB generates a core file
from the current process state. GDB will show this additional information
automatically, or through one of the memory-tag subcommands.
* Scheduler-locking and new threads
When scheduler-locking is in effect, only the current thread may run
when the inferior is resumed. However, previously, new threads
created by the resumed thread would still be able to run free. Now,
they are held stopped.
* "info breakpoints" now displays enabled breakpoint locations of
disabled breakpoints as in the "y-" state. For example:
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep n <MULTIPLE>
1.1 y- 0x00000000000011b6 in ...
1.2 y- 0x00000000000011c2 in ...
1.3 n 0x00000000000011ce in ...
* Support for Thread Local Storage (TLS) variables on FreeBSD arm and
aarch64 architectures.
* GDB now supports hardware watchpoints on FreeBSD/Aarch64.
* Remove support for building against Python 2, it is now only possible to
build GDB against Python 3.
* DBX mode has been removed.
* GDB now honours the DWARF prologue_end line-table entry flag the compiler can
emit to indicate where a breakpoint should be placed to break in a function
past its prologue.
* Completion now also offers "NUMBER" for "set" commands that accept
a numeric argument and the "unlimited" keyword. For example:
(gdb) set width <TAB>
NUMBER unlimited
and consequently:
(gdb) complete set width
set width NUMBER
set width unlimited
* Disassembler styling using libopcodes. GDB now supports
disassembler styling using libopcodes. This is only available for
some targets (currently x86 and RISC-V). For unsupported targets
Python Pygments is still used. For supported targets, libopcodes
styling is used by default.
* The Windows native target now supports target async.
* gdb now supports zstd compressed debug sections (ELFCOMPRESS_ZSTD) for ELF.
* The format of 'disassemble /r' and 'record instruction-history /r'
has changed. The instruction bytes could now be grouped together,
and displayed in the endianness of the instruction. This is the
same layout as used by GNU objdump when disassembling.
There is now 'disassemble /b' and 'record instruction-history /b'
which will always display the instructions bytes one at a time in
memory order, that is, the byte at the lowest address first.
For both /r and /b GDB is now better at using whitespace in order to
align the disassembled instruction text.
* The TUI no longer styles the source and assembly code highlighted by
the current position indicator by default. You can however
re-enable styling using the new "set style tui-current-position"
command.
* New convenience variable $_inferior_thread_count contains the number
of live threads in the current inferior.
* When a breakpoint with multiple code locations is hit, GDB now prints
the code location using the syntax <breakpoint_number>.<location_number>
such as in:
Thread 1 "zeoes" hit Breakpoint 2.3, some_func () at zeoes.c:8
* When a breakpoint is hit, GDB now sets the convenience variables $_hit_bpnum
and $_hit_locno to the hit breakpoint number and code location number.
This allows to disable the last hit breakpoint using
(gdb) disable $_hit_bpnum
or disable only the specific breakpoint code location using
(gdb) disable $_hit_bpnum.$_hit_locno
These commands can be used inside the command list of a breakpoint to
automatically disable the just encountered breakpoint (or the just
encountered specific breakpoint code location).
When a breakpoint has only one location, $_hit_locno is set to 1 so that
(gdb) disable $_hit_bpnum.$_hit_locno
and
(gdb) disable $_hit_bpnum
are both disabling the breakpoint.
* New commands
maintenance set ignore-prologue-end-flag on|off
maintenance show ignore-prologue-end-flag
This setting, which is off by default, controls whether GDB ignores the
PROLOGUE-END flag from the line-table when skipping prologue. This can be
used to force GDB to use prologue analyzers if the line-table is constructed
from erroneous debug information.
set print nibbles [on|off]
show print nibbles
This controls whether the 'print/t' command will display binary values
in groups of four bits, known as "nibbles". The default is 'off'.
maintenance set libopcodes-styling on|off
maintenance show libopcodes-styling
These can be used to force off libopcodes based styling, the Python
Pygments styling will then be used instead.
set style disassembler comment
show style disassembler comment
set style disassembler immediate
show style disassembler immediate
set style disassembler mnemonic
show style disassembler mnemonic
set style disassembler register
show style disassembler register
set style disassembler address
show style disassembler address
set style disassembler symbol
show style disassembler symbol
For targets that support libopcodes based styling, these settings
control how various aspects of the disassembler output are styled.
The 'disassembler address' and 'disassembler symbol' styles are
aliases for the 'address' and 'function' styles respectively.
maintenance print frame-id [ LEVEL ]
Print GDB's internal frame-id for the frame at LEVEL. If LEVEL is
not given, then print the frame-id for the currently selected frame.
set debug infcall on|off
show debug infcall
Print additional debug messages about inferior function calls.
set debug solib on|off
show debug solib
Print additional debug messages about shared library handling.
set style tui-current-position [on|off]
Whether to style the source and assembly code highlighted by the
TUI's current position indicator. The default is off.
set print characters LIMIT
show print characters
This new setting is like 'set print elements', but controls how many
characters of a string are printed. This functionality used to be
covered by 'set print elements', but it can be controlled separately
now. LIMIT can be set to a numerical value to request that particular
character count, to 'unlimited' to print all characters of a string,
or to 'elements', which is also the default, to follow the setting of
'set print elements' as it used to be.
print -characters LIMIT
This new option to the 'print' command has the same effect as a temporary
use of 'set print characters'.
* Changed commands
document user-defined
It is now possible to document user-defined aliases.
When a user-defined alias is documented, the help and apropos commands
use the provided documentation instead of the documentation of the
aliased command.
Documenting a user-defined alias is particularly useful when the alias
is a set of nested 'with' commands to avoid showing the help of
the with command for an alias that will in fact launch the
last command given in the nested commands.
maintenance info line-table
Add a PROLOGUE-END column to the output which indicates that an
entry corresponds to an address where a breakpoint should be placed
to be at the first instruction past a function's prologue.
* Removed commands
set debug aix-solib on|off
show debug aix-solib
set debug solib-frv on|off
show debug solib-frv
Removed in favor of "set/show debug solib".
maintenance info program-spaces
This command now includes a 'Core File' column which indicates the
name of the core file associated with each program space.
* New targets
GNU/Linux/LoongArch (gdbserver) loongarch*-*-linux*
GNU/Linux/CSKY (gdbserver) csky*-*linux*
AMDGPU amdgcn-*-*
* MI changes
** The async record stating the stopped reason 'breakpoint-hit' now
contains an optional field locno giving the code location number
when the breakpoint has multiple code locations.
* Python API
** GDB will now reformat the doc string for gdb.Command and
gdb.Parameter sub-classes to remove unnecessary leading
whitespace from each line before using the string as the help
output.
** New function gdb.format_address(ADDRESS, PROGSPACE, ARCHITECTURE),
that formats ADDRESS as 'address <symbol+offset>', where symbol is
looked up in PROGSPACE, and ARCHITECTURE is used to format address.
This is the same format that GDB uses when printing address, symbol,
and offset information from the disassembler.
** New function gdb.current_language that returns the name of the
current language. Unlike gdb.parameter('language'), this will
never return 'auto'.
** New method gdb.Frame.language that returns the name of the
frame's language.
** New Python API for wrapping GDB's disassembler:
- gdb.disassembler.register_disassembler(DISASSEMBLER, ARCH).
DISASSEMBLER is a sub-class of gdb.disassembler.Disassembler.
ARCH is either None or a string containing a bfd architecture
name. DISASSEMBLER is registered as a disassembler for
architecture ARCH, or for all architectures if ARCH is None.
The previous disassembler registered for ARCH is returned, this
can be None if no previous disassembler was registered.
- gdb.disassembler.Disassembler is the class from which all
disassemblers should inherit. Its constructor takes a string,
a name for the disassembler, which is currently only used in
some debug output. Sub-classes should override the __call__
method to perform disassembly, invoking __call__ on this base
class will raise an exception.
- gdb.disassembler.DisassembleInfo is the class used to describe
a single disassembly request from GDB. An instance of this
class is passed to the __call__ method of
gdb.disassembler.Disassembler and has the following read-only
attributes: 'address', and 'architecture', as well as the
following method: 'read_memory'.
- gdb.disassembler.builtin_disassemble(INFO, MEMORY_SOURCE),
calls GDB's builtin disassembler on INFO, which is a
gdb.disassembler.DisassembleInfo object. MEMORY_SOURCE is
optional, its default value is None. If MEMORY_SOURCE is not
None then it must be an object that has a 'read_memory' method.
- gdb.disassembler.DisassemblerResult is a class that can be used
to wrap the result of a call to a Disassembler. It has
read-only attributes 'length' and 'string'.
** gdb.Objfile now has an attribute named "is_file". This is True
if the objfile comes from a file, and False otherwise.
** New function gdb.print_options that returns a dictionary of the
prevailing print options, in the form accepted by
gdb.Value.format_string.
** gdb.Value.format_string now uses the format provided by 'print',
if it is called during a 'print' or other similar operation.
** gdb.Value.format_string now accepts the 'summary' keyword. This
can be used to request a shorter representation of a value, the
way that 'set print frame-arguments scalars' does.
** New Python type gdb.BreakpointLocation.
The new attribute 'locations' of gdb.Breakpoint returns a list of
gdb.BreakpointLocation objects specifying the locations where the
breakpoint is inserted into the debuggee.
** The gdb.register_window_type method now restricts the set of
acceptable window names. The first character of a window's name
must start with a character in the set [a-zA-Z], every subsequent
character of a window's name must be in the set [-_.a-zA-Z0-9].
* New features in the GDB remote stub, GDBserver
** GDBserver is now supported on LoongArch GNU/Linux.
** GDBserver is now supported on CSKY GNU/Linux.
* LoongArch floating-point support
GDB now supports floating-point on LoongArch GNU/Linux.
* AMD GPU ROCm debugging support
GDB now supports debugging programs offloaded to AMD GPUs using the ROCm
platform.
*** Changes in GDB 12
* DBX mode is deprecated, and will be removed in GDB 13
* GDB 12 is the last release of GDB that will support building against
Python 2. From GDB 13, it will only be possible to build GDB itself
with Python 3 support.
* The disable-randomization setting now works on Windows.
* Improved C++ template support
GDB now treats functions/types involving C++ templates like it does function
overloads. Users may omit parameter lists to set breakpoints on families of
template functions, including types/functions composed of multiple template types:
(gdb) break template_func(template_1, int)
The above will set breakpoints at every function `template_func' where
the first function parameter is any template type named `template_1' and
the second function parameter is `int'.
TAB completion also gains similar improvements.
* The FreeBSD native target now supports async mode.
* Configure changes
--enable-threading
Enable or disable multithreaded symbol loading. This is enabled
by default, but passing --disable-threading or --enable-threading=no
to configure will disable it.
Disabling this can cause a performance penalty when there are a lot of
symbols to load, but is useful for debugging purposes.
* New commands
maint set backtrace-on-fatal-signal on|off
maint show backtrace-on-fatal-signal
This setting is 'on' by default. When 'on' GDB will print a limited
backtrace to stderr in the situation where GDB terminates with a
fatal signal. This only supported on some platforms where the
backtrace and backtrace_symbols_fd functions are available.
set source open on|off
show source open
This setting, which is on by default, controls whether GDB will try
to open source code files. Switching this off will stop GDB trying
to open and read source code files, which can be useful if the files
are located over a slow network connection.
set varsize-limit
show varsize-limit
These are now deprecated aliases for "set max-value-size" and
"show max-value-size".
task apply [all | TASK-IDS...] [FLAG]... COMMAND
Like "thread apply", but applies COMMAND to Ada tasks.
watch [...] task ID
Watchpoints can now be restricted to a specific Ada task.
maint set internal-error backtrace on|off
maint show internal-error backtrace
maint set internal-warning backtrace on|off
maint show internal-warning backtrace
GDB can now print a backtrace of itself when it encounters either an
internal-error, or an internal-warning. This is on by default for
internal-error and off by default for internal-warning.
set logging on|off
Deprecated and replaced by "set logging enabled on|off".
set logging enabled on|off
show logging enabled
These commands set or show whether logging is enabled or disabled.
exit
You can now exit GDB by using the new command "exit", in addition to
the existing "quit" command.
set debug threads on|off
show debug threads
Print additional debug messages about thread creation and deletion.
set debug linux-nat on|off
show debug linux-nat
These new commands replaced the old 'set debug lin-lwp' and 'show
debug lin-lwp' respectively. Turning this setting on prints debug
messages relating to GDB's handling of native Linux inferiors.
maint flush source-cache
Flush the contents of the source code cache.
maint set gnu-source-highlight enabled on|off
maint show gnu-source-highlight enabled
Whether GDB should use the GNU Source Highlight library for adding
styling to source code. When off, the library will not be used, even
when available. When GNU Source Highlight isn't used, or can't add
styling to a particular source file, then the Python Pygments
library will be used instead.
set suppress-cli-notifications (on|off)
show suppress-cli-notifications
This controls whether printing the notifications is suppressed for CLI.
CLI notifications occur when you change the selected context
(i.e., the current inferior, thread and/or the frame), or when
the program being debugged stops (e.g., because of hitting a
breakpoint, completing source-stepping, an interrupt, etc.).
set style disassembler enabled on|off
show style disassembler enabled
If GDB is compiled with Python support, and the Python Pygments
package is available, then, when this setting is on, disassembler
output will have styling applied.
set ada source-charset
show ada source-charset
Set the character set encoding that is assumed for Ada symbols. Valid
values for this follow the values that can be passed to the GNAT
compiler via the '-gnati' option. The default is ISO-8859-1.
tui layout
tui focus
tui refresh
tui window height
These are the new names for the old 'layout', 'focus', 'refresh',
and 'winheight' tui commands respectively. The old names still
exist as aliases to these new commands.
tui window width
winwidth
The new command 'tui window width', and the alias 'winwidth' allow
the width of a tui window to be adjusted when windows are laid out
in horizontal mode.
set debug tui on|off
show debug tui
Control the display of debug output about GDB's tui.
* Changed commands
print
Printing of floating-point values with base-modifying formats like
/x has been changed to display the underlying bytes of the value in
the desired base. This was GDB's documented behavior, but was never
implemented correctly.
maint packet
This command can now print a reply, if the reply includes
non-printable characters. Any non-printable characters are printed
as escaped hex, e.g. \x?? where '??' is replaces with the value of
the non-printable character.
clone-inferior
The clone-inferior command now ensures that the TTY, CMD and ARGS
settings are copied from the original inferior to the new one.
All modifications to the environment variables done using the 'set
environment' or 'unset environment' commands are also copied to the new
inferior.
set debug lin-lwp on|off
show debug lin-lwp
These commands have been removed from GDB. The new command 'set
debug linux-nat' and 'show debug linux-nat' should be used
instead.
info win
This command now includes information about the width of the tui
windows in its output.
layout
focus
refresh
winheight
These commands are now aliases for the 'tui layout', 'tui focus',
'tui refresh', and 'tui window height' commands respectively.
* GDB's Ada parser now supports an extension for specifying the exact
byte contents of a floating-point literal. This can be useful for
setting floating-point registers to a precise value without loss of
precision. The syntax is an extension of the based literal syntax.
Use, e.g., "16lf#0123abcd#" -- the number of "l"s controls the width
of the floating-point type, and the "f" is the marker for floating
point.
* MI changes
** The '-add-inferior' with no option flags now inherits the
connection of the current inferior, this restores the behaviour of
GDB as it was prior to GDB 10.
** The '-add-inferior' command now accepts a '--no-connection'
option, which causes the new inferior to start without a
connection.
** The default version of the MI interpreter is now 4 (-i=mi4).
** The "script" field in breakpoint output (which is syntactically
incorrect in MI 3 and below) has changed in MI 4 to become a list.
This affects the following commands and events:
- -break-insert
- -break-info
- =breakpoint-created
- =breakpoint-modified
The -fix-breakpoint-script-output command can be used to enable
this behavior with previous MI versions.
* New targets
GNU/Linux/LoongArch loongarch*-*-linux*
* Removed targets
S+core score-*-*
* Python API
** New function gdb.add_history(), which takes a gdb.Value object
and adds the value it represents to GDB's history list. An
integer, the index of the new item in the history list, is
returned.
** New function gdb.history_count(), which returns the number of
values in GDB's value history.
** New gdb.events.gdb_exiting event. This event is called with a
gdb.GdbExitingEvent object which has the read-only attribute
'exit_code', which contains the value of the GDB exit code. This
event is triggered once GDB decides it is going to exit, but
before GDB starts to clean up its internal state.
** New function gdb.architecture_names(), which returns a list
containing all of the possible Architecture.name() values. Each
entry is a string.
** New function gdb.Architecture.integer_type(), which returns an
integer type given a size and a signed-ness.
** New gdb.TargetConnection object type that represents a connection
(as displayed by the 'info connections' command). A sub-class,
gdb.RemoteTargetConnection, is used to represent 'remote' and
'extended-remote' connections.
** The gdb.Inferior type now has a 'connection' property which is an
instance of gdb.TargetConnection, the connection used by this
inferior. This can be None if the inferior has no connection.
** New 'gdb.events.connection_removed' event registry, which emits a
'gdb.ConnectionEvent' when a connection is removed from GDB.
This event has a 'connection' property, a gdb.TargetConnection
object for the connection being removed.
** New gdb.connections() function that returns a list of all
currently active connections.
** New gdb.RemoteTargetConnection.send_packet(PACKET) method. This
is equivalent to the existing 'maint packet' CLI command; it
allows a user specified packet to be sent to the remote target.
** New function gdb.host_charset(), returns a string, which is the
name of the current host charset.
** New gdb.set_parameter(NAME, VALUE). This sets the gdb parameter
NAME to VALUE.
** New gdb.with_parameter(NAME, VALUE). This returns a context
manager that temporarily sets the gdb parameter NAME to VALUE,
then resets it when the context is exited.
** The gdb.Value.format_string method now takes a 'styling'
argument, which is a boolean. When true, the returned string can
include escape sequences to apply styling. The styling will only
be present if styling is otherwise turned on in GDB (see 'help
set styling'). When false, which is the default if the argument
is not given, then no styling is applied to the returned string.
** New read-only attribute gdb.InferiorThread.details, which is
either a string, containing additional, target specific thread
state information, or None, if there is no such additional
information.
** New read-only attribute gdb.Type.is_scalar, which is True for
scalar types, and False for all other types.
** New read-only attribute gdb.Type.is_signed. This attribute
should only be read when Type.is_scalar is True, and will be True
for signed types, and False for all other types. Attempting to
read this attribute for non-scalar types will raise a ValueError.
** It is now possible to add GDB/MI commands implemented in Python.
* New features in the GDB remote stub, GDBserver
** GDBserver is now supported on OpenRISC GNU/Linux.
* New native configurations
GNU/Linux/OpenRISC or1k*-*-linux*
*** Changes in GDB 11
* The 'set disassembler-options' command now supports specifying options
for the ARC target.
* GDB now supports general memory tagging functionality if the underlying
architecture supports the proper primitives and hooks. Currently this is
enabled only for AArch64 MTE.
This includes:
- Additional information when the inferior crashes with a SIGSEGV caused by
a memory tag violation.
- A new modifier 'm' for the "x" command, which displays allocation tags for a
particular memory range.
- Display of memory tag mismatches by "print", for addresses and
pointers, if memory tagging is supported by the architecture.
* Building GDB now requires GMP (The GNU Multiple Precision Arithmetic
Library).
* MI changes
** '-break-insert --qualified' and '-dprintf-insert --qualified'
The MI -break-insert and -dprintf-insert commands now support a
new "--qualified" option that makes GDB interpret a specified
function name as a complete fully-qualified name. This is the
equivalent of the CLI's "break -qualified" and "dprintf
-qualified".
** '-break-insert --force-condition' and '-dprintf-insert --force-condition'
The MI -break-insert and -dprintf-insert commands now support a
'--force-condition' flag to forcibly define a condition even when
the condition is invalid at all locations of the breakpoint. This
is equivalent to the '-force-condition' flag of the CLI's "break"
command.
** '-break-condition --force'
The MI -break-condition command now supports a '--force' flag to
forcibly define a condition even when the condition is invalid at
all locations of the selected breakpoint. This is equivalent to
the '-force' flag of the CLI's "cond" command.
** '-file-list-exec-source-files [--group-by-objfile]
[--basename | --dirname]
[--] [REGEXP]'
The existing -file-list-exec-source-files command now takes an
optional REGEXP which is used to filter the source files that are
included in the results.
By default REGEXP is matched against the full filename of the
source file. When one of --basename or --dirname is given then
REGEXP is only matched against the specified part of the full
source filename.
When the optional --group-by-objfile flag is used the output
format is changed, the results are now a list of object files
(executable and libraries) with the source files that are
associated with each object file.
The results from -file-list-exec-source-files now include a
'debug-fully-read' field which takes the value 'true' or 'false'.
A 'true' value indicates the source file is from a compilation
unit that has had its debug information fully read in by GDB, a
value of 'false' indicates GDB has only performed a partial scan
of the debug information so far.
* GDB now supports core file debugging for x86_64 Cygwin programs.
* GDB will now look for the .gdbinit file in a config directory before
looking for ~/.gdbinit. The file is searched for in the following
locations: $XDG_CONFIG_HOME/gdb/gdbinit, $HOME/.config/gdb/gdbinit,
$HOME/.gdbinit. On Apple hosts the search order is instead:
$HOME/Library/Preferences/gdb/gdbinit, $HOME/.gdbinit.
* GDB now supports fixed point types which are described in DWARF
as base types with a fixed-point encoding. Additionally, support
for the DW_AT_GNU_numerator and DW_AT_GNU_denominator has also
been added.
For Ada, this allows support for fixed point types without requiring
the use of the GNAT encoding (based on information added to the type's
name following a GNAT-specific format).
* GDB will now load and process commands from ~/.config/gdb/gdbearlyinit
or ~/.gdbearlyinit if these files are present. These files are
processed earlier than any of the other initialization files and
can affect parts of GDB's startup that previously had already been
completed before the initialization files were read, for example
styling of the initial GDB greeting.
* GDB now has two new options "--early-init-command" and
"--early-init-eval-command" with corresponding short options "-eix"
and "-eiex" that allow options (that would normally appear in a
gdbearlyinit file) to be passed on the command line.
* For RISC-V targets, the target feature "org.gnu.gdb.riscv.vector" is
now understood by GDB, and can be used to describe the vector
registers of a target. The precise requirements of this register
feature are documented in the GDB manual.
* For ARM targets, the "org.gnu.gdb.arm.m-profile-mve" feature is now
supported by GDB and describes a new VPR register from the ARM MVE
(Helium) extension. See the GDB manual for more information.
* TUI improvements
** TUI windows now support mouse actions. The mouse wheel scrolls
the appropriate window.
** Key combinations that do not have a specific action on the
focused window are passed to GDB. For example, you now can use
Ctrl-Left/Ctrl-Right to move between words in the command window
regardless of which window is in focus. Previously you would
need to focus on the command window for such key combinations to
work.
* New commands
set debug event-loop
show debug event-loop
Control the display of debug output about GDB's event loop.
set print memory-tag-violations
show print memory-tag-violations
Control whether to display additional information about memory tag violations
when printing pointers and addresses. Architecture support for memory
tagging is required for this option to have an effect.
maintenance flush symbol-cache
maintenance flush register-cache
These new commands are equivalent to the already existing commands
'maintenance flush-symbol-cache' and 'flushregs' respectively.
maintenance flush dcache
A new command to flush the dcache.
maintenance info target-sections
Print GDB's internal target sections table.
maintenance info jit
Print the JIT code objects in the inferior known to GDB.
memory-tag show-logical-tag POINTER
Print the logical tag for POINTER.
memory-tag with-logical-tag POINTER TAG
Print POINTER with logical tag TAG.
memory-tag show-allocation-tag ADDRESS
Print the allocation tag for ADDRESS.
memory-tag set-allocation-tag ADDRESS LENGTH TAGS
Set the allocation tag for [ADDRESS, ADDRESS + LENGTH) to TAGS.
memory-tag check POINTER
Validate that POINTER's logical tag matches the allocation tag.
set startup-quietly on|off
show startup-quietly
When 'on', this causes GDB to act as if "-silent" were passed on the
command line. This command needs to be added to an early
initialization file (e.g. ~/.config/gdb/gdbearlyinit) in order to
affect GDB.
set print type hex on|off
show print type hex
When 'on', the 'ptype' command uses hexadecimal notation to print sizes
and offsets of struct members. When 'off', decimal notation is used.
set python ignore-environment on|off
show python ignore-environment
When 'on', this causes GDB's builtin Python to ignore any
environment variables that would otherwise affect how Python
behaves. This command needs to be added to an early initialization
file (e.g. ~/.config/gdb/gdbearlyinit) in order to affect GDB.
set python dont-write-bytecode auto|on|off
show python dont-write-bytecode
When 'on', this causes GDB's builtin Python to not write any
byte-code (.pyc files) to disk. This command needs to be added to
an early initialization file (e.g. ~/.config/gdb/gdbearlyinit) in
order to affect GDB. When 'off' byte-code will always be written.
When set to 'auto' (the default) Python will check the
PYTHONDONTWRITEBYTECODE environment variable.
* Changed commands
break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]
[-force-condition] [if CONDITION]
This command would previously refuse setting a breakpoint if the
CONDITION expression is invalid at a location. It now accepts and
defines the breakpoint if there is at least one location at which
the CONDITION is valid. The locations for which the CONDITION is
invalid, are automatically disabled. If CONDITION is invalid at all
of the locations, setting the breakpoint is still rejected. However,
the '-force-condition' flag can be used in this case for forcing GDB to
define the breakpoint, making all the current locations automatically
disabled. This may be useful if the user knows the condition will
become meaningful at a future location, e.g. due to a shared library
load.
condition [-force] N COND
The behavior of this command is changed the same way for the 'break'
command as explained above. The '-force' flag can be used to force
GDB into defining the condition even when COND is invalid for all the
current locations of breakpoint N.
flushregs
maintenance flush-symbol-cache
These commands are deprecated in favor of the new commands
'maintenance flush register-cache' and 'maintenance flush
symbol-cache' respectively.
set style version foreground COLOR
set style version background COLOR
set style version intensity VALUE
Control the styling of GDB's version number text.
inferior [ID]
When the ID parameter is omitted, then this command prints information
about the current inferior. When the ID parameter is present, the
behavior of the command is unchanged and have the inferior ID become
the current inferior.
maintenance info sections
The ALLOBJ keyword has been replaced with an -all-objects command
line flag. It is now possible to filter which sections are printed
even when -all-objects is passed.
ptype[/FLAGS] TYPE | EXPRESSION
The 'ptype' command has two new flags. When '/x' is set, hexadecimal
notation is used when printing sizes and offsets of struct members.
When '/d' is set, decimal notation is used when printing sizes and
offsets of struct members. Default behavior is given by 'show print
type hex'.
info sources
The info sources command output has been restructured. The results
are now based around a list of objfiles (executable and libraries),
and for each objfile the source files that are part of that objfile
are listed.
* Removed targets and native configurations
ARM Symbian arm*-*-symbianelf*
* New remote packets
qMemTags
Request the remote to send allocation tags for a particular memory range.
QMemTags
Request the remote to store the specified allocation tags to the requested
memory range.
* Guile API
** Improved support for rvalue reference values:
TYPE_CODE_RVALUE_REF is now exported as part of the API and the
value-referenced-value procedure now handles rvalue reference
values.
** New procedures for obtaining value variants:
value-reference-value, value-rvalue-reference-value and
value-const-value.
** Temporary breakpoints can now be created with make-breakpoint and
tested for using breakpoint-temporary?.
* Python API
** Inferior objects now contain a read-only 'connection_num' attribute that
gives the connection number as seen in 'info connections' and
'info inferiors'.
** New method gdb.Frame.level() which returns the stack level of the
frame object.
** New method gdb.PendingFrame.level() which returns the stack level
of the frame object.
** When hitting a catchpoint, the Python API will now emit a
gdb.BreakpointEvent rather than a gdb.StopEvent. The
gdb.Breakpoint attached to the event will have type BP_CATCHPOINT.
** Python TUI windows can now receive mouse click events. If the
Window object implements the click method, it is called for each
mouse click event in this window.
*** Changes in GDB 10
* There are new feature names for ARC targets: "org.gnu.gdb.arc.core"
and "org.gnu.gdb.arc.aux". The old names are still supported but
must be considered obsolete. They will be deprecated after some
grace period.
* Help and apropos commands will now show the documentation of a
command only once, even if that command has one or more aliases.
These commands now show the command name, then all of its aliases,
and finally the description of the command.
* 'help aliases' now shows only the user defined aliases. GDB predefined
aliases are shown together with their aliased command.
* GDB now supports debuginfod, an HTTP server for distributing ELF/DWARF
debugging information as well as source code.
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 https://sourceware.org/elfutils.
* Multi-target debugging support
GDB now supports debugging multiple target connections
simultaneously. For example, you can now have each inferior
connected to different remote servers running in different machines,
or have one inferior debugging a local native process, an inferior
debugging a core dump, etc.
This support is experimental and comes with some limitations -- you
can only resume multiple targets simultaneously if all targets
support non-stop mode, and all remote stubs or servers must support
the same set of remote protocol features exactly. See also "info
connections" and "add-inferior -no-connection" below, and "maint set
target-non-stop" in the user manual.
* New features in the GDB remote stub, GDBserver
** GDBserver is now supported on ARC GNU/Linux.
** GDBserver is now supported on RISC-V GNU/Linux.
** GDBserver no longer supports these host triplets:
i[34567]86-*-lynxos*
powerpc-*-lynxos*
i[34567]86-*-nto*
bfin-*-*linux*
crisv32-*-linux*
cris-*-linux*
m32r*-*-linux*
tilegx-*-linux*
arm*-*-mingw32ce*
i[34567]86-*-mingw32ce*
* Debugging MS-Windows processes now sets $_exitsignal when the
inferior is terminated by a signal, instead of setting $_exitcode.
* 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
history.
* 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.
tui new-layout NAME WINDOW WEIGHT [WINDOW WEIGHT]...
Define a new TUI layout, specifying its name and the windows that
will be displayed.
maintenance print xml-tdesc [FILE]
Prints the current target description as an XML document. If the
optional FILE is provided (which is an XML target description) then
the target description is read from FILE into GDB, and then
reprinted.
maintenance print core-file-backed-mappings
Prints file-backed mappings loaded from a core file's note section.
Output is expected to be similar to that of "info proc mappings".
set debug fortran-array-slicing on|off
show debug fortran-array-slicing
Print debugging when taking slices of Fortran arrays.
set fortran repack-array-slices on|off
show fortran repack-array-slices
When taking slices from Fortran arrays and strings, if the slice is
non-contiguous within the original value then, when this option is
on, the new value will be repacked into a single contiguous value.
When this option is off, then the value returned will consist of a
descriptor that describes the slice within the memory of the
original parent value.
* Changed commands
alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]
The alias command can now specify default args for an alias.
GDB automatically prepends the alias default args to the argument list
provided explicitly by the user.
For example, to have a backtrace with full details, you can define
an alias 'bt_ALL' as
'alias bt_ALL = backtrace -entry-values both -frame-arg all
-past-main -past-entry -full'.
Alias default arguments can also use a set of nested 'with' commands,
e.g. 'alias pp10 = with print pretty -- with print elem 10 -- print'
defines the alias pp10 that will pretty print a maximum of 10 elements
of the given expression (if the expression is an array).
* New targets
GNU/Linux/RISC-V (gdbserver) riscv*-*-linux*
BPF bpf-unknown-none
Z80 z80-unknown-*
* Python API
** 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
commands.
* 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
messages.
* 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
| [COMMAND] | SHELL_COMMAND
| -d DELIM COMMAND DELIM SHELL_COMMAND
pipe [COMMAND] | SHELL_COMMAND
pipe -d DELIM COMMAND DELIM SHELL_COMMAND
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.
with SETTING [VALUE] [-- COMMAND]
w SETTING [VALUE] [-- 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
infrastructure.
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
TUI.
set print frame-info [short-location|location|location-and-address
|source-and-location|source-line|auto]
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
help
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.
printf
eval
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
release.
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
framework.
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
release:
** 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
|location-and-address|short-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:
-full
-no-filters
-hide
** 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
abbreviated.
** GDB can now complete the options of the "info threads", "info
functions", "info variables", "info locals", and "info args"
commands.
** 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
-complete
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
present.
* Testsuite
The testsuite now creates the files gdb.cmd (containing the arguments
used to launch GDB) and gdb.in (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,
sparc*-*-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 libcp1.so
(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
information.
* Removed support for old demangling styles arm, edg, gnu, hp and
lucid.
* 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
displayed.
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.
taas COMMAND
Apply a command to all threads (ignoring errors and empty output).
Shortcut for 'thread apply all -s COMMAND'.
faas COMMAND
Apply a command to all frames (ignoring errors and empty output).
Shortcut for 'frame apply all -s COMMAND'.
tfaas COMMAND
Apply a command to all frames of all threads (ignoring errors and empty
output).
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
rbreak
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_LOC_COMMON_BLOCK, gdb.SYMBOL_MODULE_DOMAIN, and
gdb.SYMBOL_COMMON_BLOCK_DOMAIN were added to reflect changes to
the gdb core.
** gdb.SYMBOL_VARIABLES_DOMAIN, gdb.SYMBOL_FUNCTIONS_DOMAIN, and
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-ubsan
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
default.
* 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
alignof.
* 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
library
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
reported.
* Configure changes
--enable-codesign=CERT
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
correctly:
(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)
-a
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:
A::B::func()
B::func()
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:
https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c11-abi/
Functions with a C++11 abi tag are demangled/displayed like this:
function[abi:cxx11](int)
^^^^^^^^^^^
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
QEnvironmentHexEncoded
Inform GDBserver of an environment variable that is to be passed to
the inferior when starting it.
QEnvironmentUnset
Inform GDBserver of an environment variable that is to be unset
before starting the remote inferior.
QEnvironmentReset
Inform GDBserver that the environment should be reset (i.e.,
user-set environment variables should be unset).
QStartupWithShell
Indicates whether the inferior must be started with a shell or not.
QSetWorkingDir
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.
starti
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
'int'.
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
instructions.
* 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
removed.
* 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
features.
* 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
debugger.
* 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
end
end
* 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
flash-erase
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
-target-flash-erase
Erases all the flash memory regions reported by the target. This is
equivalent to the CLI command flash-erase.
-file-list-shared-libraries
List the shared libraries in the program. This is
equivalent to the CLI command "info shared".
-catch-handlers
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
descriptions.
* 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 https://www.rust-lang.org/ for more information about
Rust.
* 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
line.
* 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.
new-ui INTERP TTY
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
gdb.breakpoint_deleted.
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:
=record-started,thread-group="i1",method="btrace",format="bts"
* MI async record =thread-selected now includes the frame field. For example:
=thread-selected,id="3",frame={level="0",addr="0x00000000004007c0"}
* 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
IDs.
* 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)
(gdb)
* 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
example:
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
clients.
* 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.
vCtrlC
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.
QThreadEvents
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.
QCatchSyscalls
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
thread.
* 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
left.
* 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
qXfer:btrace-conf:read
Return the branch trace configuration for the current thread.
Qbtrace-conf:bts:size
Set the requested ring buffer size for branch tracing in BTS format.
Qbtrace:pt
Enable Intel Processor Trace-based branch tracing for the current
process. The remote stub reports support for this packet to GDB's
qSupported query.
Qbtrace-conf:pt:size
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.
vFile:fstat:
Return information about files on the remote system.
qXfer:exec-file:read
Return the full absolute name of the file that was executed to
create a process running on the remote system.
vFile:setfs:
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
targets.
* 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
--with-intel-pt
This configure option allows the user to build GDB with support for
Intel Processor Trace (default: auto). This requires libipt.
--with-libipt-prefix=PATH
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 libipt.so 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
inferior.
** gdb.events.inferior_call_pre: Function call is about to be made.
** gdb.events.inferior_call_post: Function call has just been made.
** gdb.events.memory_changed: A memory location has been altered.
** gdb.events.register_changed: 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 libcc1.so
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
scripts.
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
provided.
* 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.
guile-repl
gr
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
target-stack".
* 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
available.
** 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)
instead.
* 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.
http://gcc.gnu.org/wiki/DebugFission
* 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
"void".
* 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/gdb-add-index.sh 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.
i[34567]86-*-openbsd3.[0-3]
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
directly.
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
--configuration
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
"undefined-command-error-code".
** 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
"exec-run-start-option".
** 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"
below.
* 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
vCont;r
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
speedup.
* 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
target.
* 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
Emacs.
* 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'.