What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 7.5
+*** Changes since GDB 7.7
+
+* 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.
+
+* New remote packets
+
+qXfer:btrace:read's annex
+ The qXfer:btrace:read packet supports a new annex 'delta' to read
+ branch trace incrementally.
+
+*** 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 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
Release versions, on the other hand, are built without -lmcheck
by default. The --enable-libmcheck/--disable-libmcheck configure
options allow the user to override that default.
+--with-babeltrace/--with-babeltrace-include/--with-babeltrace-lib
+ This configure option allows the user to build GDB with
+ libbabeltrace using which GDB can read Common Trace Format data.
* New commands (for set/show, see "New options" below)
disable type-printer [name]...
Enable or disable type printers.
-set debug notification
-show debug notification
- Control display of debugging info for async remote notification.
-
* Removed commands
** For the Renesas Super-H architecture, the "regs" command has been removed
Control whether typedef definitions are displayed by "ptype".
The default is to show them.
+set filename-display basename|relative|absolute
+show filename-display
+ Control the way in which filenames is displayed.
+ The default is "relative", which preserves previous behavior.
+
+set trace-buffer-size
+show trace-buffer-size
+ Request target to change the size of trace buffer.
+
+set remote trace-buffer-size-packet auto|on|off
+show remote trace-buffer-size-packet
+ Control the use of the remote protocol `QTBuffer:size' packet.
+
+set debug aarch64
+show debug aarch64
+ Control display of debugging messages related to ARM AArch64.
+ The default is off.
+
+set debug coff-pe-read
+show debug coff-pe-read
+ Control display of debugging messages related to reading of COFF/PE
+ exported symbols.
+
+set debug mach-o
+show debug mach-o
+ Control display of debugging messages related to Mach-O symbols
+ processing.
+
+set debug notification
+show debug notification
+ Control display of debugging info for async remote notification.
+
* MI changes
** Command parameter changes are now notified using new async record
"=cmd-param-changed".
** Trace frame changes caused by command "tfind" are now notified using
new async record "=traceframe-changed".
- ** The creation and deletion of trace state variables are now notified
- using new async records "=tsv-created" and "=tsv-deleted".
+ ** The creation, deletion and modification of trace state variables
+ are now notified using new async records "=tsv-created",
+ "=tsv-deleted" and "=tsv-modified".
** The start and stop of process record are now notified using new
async record "=record-started" and "=record-stopped".
** Memory changes are now notified using new async record
"=memory-changed".
** The data-disassemble command response will include a "fullname" field
- containing the absolute file name when GDB can determine it and source
- has been requested.
+ containing the absolute file name when source has been requested.
** New optional parameter COUNT added to the "-data-write-memory-bytes"
command, to allow pattern filling of memory areas.
** New commands "-catch-load"/"-catch-unload" added for intercepting
** The response to breakpoint commands and breakpoint async records
includes an "installed" field containing a boolean state about each
non-pending tracepoint location is whether installed on target or not.
+ ** Output of the "-trace-status" command includes a "trace-file" field
+ containing the name of the trace file being examined. This field is
+ optional, and only present when examining a trace file.
+ ** The "fullname" field is now always present along with the "file" field,
+ even if the file cannot be found by GDB.
* GDB now supports the "mini debuginfo" section, .gnu_debugdata.
You must have the LZMA library available when configuring GDB for this
feature to be enabled. For more information, see:
http://fedoraproject.org/wiki/Features/MiniDebugInfo
+* New remote packets
+
+QTBuffer:size
+ Set the size of trace buffer. The remote stub reports support for this
+ packet to gdb's qSupported query.
+
+Qbtrace:bts
+ Enable Branch Trace Store (BTS)-based branch tracing for the current
+ thread. The remote stub reports support for this packet to gdb's
+ qSupported query.
+
+Qbtrace:off
+ Disable branch tracing for the current thread. The remote stub reports
+ support for this packet to gdb's qSupported query.
+
+qXfer:btrace:read
+ Read the traced branches for the current thread. The remote stub
+ reports support for this packet to gdb's qSupported query.
+
*** Changes in GDB 7.5
* GDB now supports x32 ABI. Visit <http://sites.google.com/site/x32abi/>
C++ and Java objects.
** "explore" and its sub commands "explore value" and "explore type"
- can be used to reccursively explore values and types of
+ can be used to recursively explore values and types of
expressions. These commands are available only if GDB is
configured with '--with-python'.
two different machines, type ``./configure host -target=targ''.
Host is the machine where GDB will run; targ is the machine
where the program that you are debugging will run.
+
+ * GDB now supports access to Intel(R) MPX registers on GNU/Linux.