What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 7.3.1
+*** Changes since GDB 7.4
+
+* GDB now has support for SDT (Static Defined Tracing) probes. Currently,
+ the only implemented backend is for SystemTap probes (<sys/sdt.h>). You
+ can set a breakpoint using the new "-probe, "-pstap" or "-probe-stap"
+ options and inspect the probe arguments using the new $_probe_arg family
+ of convenience variables. You can obtain more information about SystemTap
+ in <http://sourceware.org/systemtap/>.
+
+* GDB now supports reversible debugging on ARM, it allows you to
+ debug basic ARM and THUMB instructions, and provides
+ record/replay support.
+
+* The option "symbol-reloading" has been deleted as it is no longer used.
+
+* Python scripting
+
+ ** GDB commands implemented in Python can now be put in command class
+ "gdb.COMMAND_USER".
+
+ ** The "maint set python print-stack on|off" is now deleted.
+
+ ** A new class, gdb.printing.FlagEnumerationPrinter, can be used to
+ apply "flag enum"-style pretty-printing to any enum.
+
+ ** gdb.lookup_symbol can now work when there is no current frame.
+
+ ** gdb.Symbol now has a 'line' attribute, holding the line number in
+ the source at which the symbol was defined.
+
+ ** gdb.Symbol now has the new attribute 'needs_frame' and the new
+ method 'value'. The former indicates whether the symbol needs a
+ frame in order to compute its value, and the latter computes the
+ symbol's value.
+
+ ** A new method 'referenced_value' on gdb.Value objects which can
+ dereference pointer as well as C++ reference values.
+
+* Go language support.
+ GDB now supports debugging programs written in the Go programming
+ language.
+
+* GDBserver now supports stdio connections.
+ E.g. (gdb) target remote | ssh myhost gdbserver - hello
+
+* The binary "gdbtui" can no longer be built or installed.
+ Use "gdb -tui" instead.
+
+* GDB will now print "flag" enums specially. A flag enum is one where
+ all the enumerator values have no bits in common when pairwise
+ "and"ed. When printing a value whose type is a flag enum, GDB will
+ show all the constants, e.g., for enum E { ONE = 1, TWO = 2}:
+ (gdb) print (enum E) 3
+ $1 = (ONE | TWO)
+
+* The filename part of a linespec will now match trailing components
+ of a source file name. For example, "break gcc/expr.c:1000" will
+ now set a breakpoint in build/gcc/expr.c, but not
+ build/libcpp/expr.c.
+
+* The "info proc" and "generate-core-file" commands will now also
+ work on remote targets connected to GDBserver on Linux.
+
+* The command "info catch" has been removed. It has been disabled
+ since December 2007.
+
+* The "catch exception" and "catch assert" commands now accept
+ a condition at the end of the command, much like the "break"
+ command does. For instance:
+
+ (gdb) catch exception Constraint_Error if Barrier = True
+
+ Previously, it was possible to add a condition to such catchpoints,
+ but it had to be done as a second step, after the catchpoint had been
+ created, using the "condition" command.
+
+* The "info static-tracepoint-marker" command will now also work on
+ native Linux targets with in-process agent.
+
+* GDB can now set breakpoints on inlined functions.
+
+* The .gdb_index section has been updated to include symbols for
+ inlined functions. GDB will ignore older .gdb_index sections by
+ default, which could cause symbol files to be loaded more slowly
+ until their .gdb_index sections can be recreated. The new option
+ --use-deprecated-index-sections will cause GDB to use any older
+ .gdb_index sections it finds. This will restore performance, but
+ the ability to set breakpoints on inlined functions will be lost
+ in symbol files with older .gdb_index sections.
+
+* Ada support for GDB/MI Variable Objects has been added.
+
+* GDB can now support 'breakpoint always-inserted mode' in 'record'
+ target.
+
+* New commands
+
+ ** "catch load" and "catch unload" can be used to stop when a shared
+ library is loaded or unloaded, respectively.
+
+ ** "enable count" can be used to auto-disable a breakpoint after
+ several hits.
+
+ ** "info vtbl" can be used to show the virtual method tables for
+ C++ and Java objects.
+
+ ** "explore" and its sub commands "explore value" and "explore type"
+ can be used to reccursively explore values and types of
+ expressions. These commands are available only if GDB is
+ configured with '--with-python'.
+
+ ** "info auto-load" shows status of all kinds of auto-loaded files,
+ "info auto-load gdb-scripts" shows status of auto-loading GDB canned
+ sequences of commands files, "info auto-load python-scripts"
+ shows status of auto-loading Python script files,
+ "info auto-load local-gdbinit" shows status of loading init file
+ (.gdbinit) from current directory and "info auto-load libthread-db" shows
+ status of inferior specific thread debugging shared library loading.
+
+ ** "info auto-load-scripts", "set auto-load-scripts on|off"
+ and "show auto-load-scripts" commands have been deprecated, use their
+ "info auto-load python-scripts", "set auto-load python-scripts on|off"
+ and "show auto-load python-scripts" counterparts instead.
+
+* New targets
+
+Renesas RL78 rl78-*-elf
+HP OpenVMS ia64 ia64-hp-openvms*
+
+* GDBserver supports evaluation of breakpoint conditions. When
+ support is advertised by GDBserver, GDB may be told to send the
+ breakpoint conditions in bytecode form to GDBserver. GDBserver
+ will only report the breakpoint trigger to GDB when its condition
+ evaluates to true.
+
+* New options
+
+set breakpoint condition-evaluation
+show breakpoint condition-evaluation
+ Control whether breakpoint conditions are evaluated by GDB ("host") or by
+ GDBserver ("target"). Default option "auto" chooses the most efficient
+ available mode.
+ This option can improve debugger efficiency depending on the speed of the
+ target.
+
+set auto-load off
+ Disable auto-loading globally.
+
+show auto-load
+ Show auto-loading setting of all kinds of auto-loaded files.
+
+set auto-load gdb-scripts on|off
+show auto-load gdb-scripts
+ Control auto-loading of GDB canned sequences of commands files.
+
+set auto-load python-scripts on|off
+show auto-load python-scripts
+ Control auto-loading of Python script files.
+
+set auto-load local-gdbinit on|off
+show auto-load local-gdbinit
+ Control loading of init file (.gdbinit) from current directory.
+
+set auto-load libthread-db on|off
+show auto-load libthread-db
+ Control auto-loading of inferior specific thread debugging shared library.
+
+set auto-load safe-path <dir1>[:<dir2>...]
+show auto-load safe-path
+ Set a list of directories from which it is safe to auto-load files.
+ The delimiter (':' above) may differ according to the host platform.
+
+set debug auto-load on|off
+show debug auto-load
+ Control display of debugging info for auto-loading the files above.
+
+* New remote packets
+
+z0/z1 conditional breakpoints extension
+
+ The z0/z1 breakpoint insertion packets have been extended to carry
+ a list of conditional expressions over to the remote stub depending on the
+ condition evaluation mode. The use of this extension can be controlled
+ via the "set remote conditional-breakpoints-packet" command.
+
+QProgramSignals:
+
+ Specify the signals which the remote stub may pass to the debugged
+ program without GDB involvement.
+
+* New command line options
+
+--init-command=FILE, -ix Like --command, -x but execute it
+ before loading inferior.
+--init-eval-command=COMMAND, -iex Like --eval-command=COMMAND, -ex but
+ execute it before loading inferior.
+
+*** Changes in GDB 7.4
+
+* GDB now handles ambiguous linespecs more consistently; the existing
+ FILE:LINE support has been expanded to other types of linespecs. A
+ breakpoint will now be set on all matching locations in all
+ inferiors, and locations will be added or removed according to
+ inferior changes.
+
+* GDB now allows you to skip uninteresting functions and files when
+ stepping with the "skip function" and "skip file" commands.
* GDB has two new commands: "set remote hardware-watchpoint-length-limit"
and "show remote hardware-watchpoint-length-limit". These allows to
existing one.
** The "maint set python print-stack on|off" command has been
- deprecated, and a new command: "set python print-stack on|off" has
- replaced it. Additionally, the default for "print-stack" is now
- "off".
+ deprecated and will be deleted in GDB 7.5.
+ A new command: "set python print-stack none|full|message" has
+ replaced it. Additionally, the default for "print-stack" is
+ now "message", which just prints the error message without
+ the stack trace.
- ** A prompt subsitution hook (prompt_hook) is now available to the
+ ** A prompt substitution hook (prompt_hook) is now available to the
Python API.
- ** A new command set/show extended-prompt has been added.
-
** A new Python module, gdb.prompt has been added to the GDB Python
modules library. This module provides functionality for
- escape sequentions in prompts (used by set/show
+ escape sequences in prompts (used by set/show
extended-prompt). These escape sequences are replaced by their
corresponding value.
'data-directory'/python/gdb/function are now automatically loaded
on GDB start-up.
+ ** Blocks now provide four new attributes. global_block and
+ static_block will return the global and static blocks
+ respectively. is_static and is_global are boolean attributes
+ that indicate if the block is one of those two types.
+
** Symbols now provide the "type" attribute, the type of the symbol.
** The "gdb.breakpoint" function has been deprecated in favor of
"gdb.breakpoints".
+ ** A new class "gdb.FinishBreakpoint" is provided to catch the return
+ of a function. This class is based on the "finish" command
+ available in the CLI.
+
** Type objects for struct and union types now allow access to
the fields using standard Python dictionary (mapping) methods.
For example, "some_type['myfield']" now works, as does
** A new event "gdb.new_objfile" has been added, triggered by loading a
new object file.
+ ** A new function, "deep_items" has been added to the gdb.types
+ module in the GDB Python modules library. This function returns
+ an iterator over the fields of a struct or union type. Unlike
+ the standard Python "iteritems" method, it will recursively traverse
+ any anonymous fields.
+
+* MI changes
+
+ ** "*stopped" events can report several new "reason"s, such as
+ "solib-event".
+
+ ** Breakpoint changes are now notified using new async records, like
+ "=breakpoint-modified".
+
+ ** New command -ada-task-info.
+
* libthread-db-search-path now supports two special values: $sdir and $pdir.
$sdir specifies the default system locations of shared libraries.
$pdir specifies the directory where the libpthread used by the application
the first connection is made. The listening port used by GDBserver will
become available after that.
-* New commands "info macros", "info definitions",
- and "alias" have been added.
+* New commands "info macros" and "alias" have been added.
* New function parameters suffix @entry specifies value of function parameter
at the time the function got called. Entry values are available only since
gcc version 4.7.
+* New commands
+
+!SHELL COMMAND
+ "!" is now an alias of the "shell" command.
+ Note that no space is needed between "!" and SHELL COMMAND.
+
* Changed commands
watch EXPRESSION mask MASK_VALUE
This command was formerly named "maintenance print section-scripts".
It is now generally useful and is no longer a maintenance-only command.
+info macro [-all] [--] MACRO
+ The info macro command has new options `-all' and `--'. The first for
+ printing all definitions of a macro. The second for explicitly specifying
+ the end of arguments and the beginning of the macro name in case the macro
+ name starts with a hyphen.
+
+collect[/s] EXPRESSIONS
+ The tracepoint collect command now takes an optional modifier "/s"
+ that directs it to dereference pointer-to-character types and
+ collect the bytes of memory up to a zero byte. The behavior is
+ similar to what you see when you use the regular print command on a
+ string. An optional integer following the "/s" sets a bound on the
+ number of bytes that will be collected.
+
+tstart [NOTES]
+ The trace start command now interprets any supplied arguments as a
+ note to be recorded with the trace run, with an effect similar to
+ setting the variable trace-notes.
+
+tstop [NOTES]
+ The trace stop command now interprets any arguments as a note to be
+ mentioned along with the tstatus report that the trace was stopped
+ with a command. The effect is similar to setting the variable
+ trace-stop-notes.
+
* Tracepoints can now be enabled and disabled at any time after a trace
experiment has been started using the standard "enable" and "disable"
commands. It is now possible to start a trace experiment with no enabled
begin, assuming that tracepoints will be enabled as needed while the trace
is running.
+* Fast tracepoints on 32-bit x86-architectures can now be placed at
+ locations with 4-byte instructions, when they were previously
+ limited to locations with instructions of 5 bytes or longer.
+
* New options
+set extended-prompt
+show extended-prompt
+ Set the GDB prompt, and allow escape sequences to be inserted to
+ display miscellaneous information (see 'help set extended-prompt'
+ for the list of sequences). This prompt (and any information
+ accessed through the escape sequences) is updated every time the
+ prompt is displayed.
+
set print entry-values (both|compact|default|if-needed|no|only|preferred)
show print entry-values
Set printing of frame argument values at function entry. In some cases
Control display of debugging info for determining frame argument values at
function entry and virtual tail call frames.
+set basenames-may-differ
+show basenames-may-differ
+ Set whether a source file may have multiple base names.
+ (A "base name" is the name of a file with the directory part removed.
+ Example: The base name of "/home/user/hello.c" is "hello.c".)
+ If set, GDB will canonicalize file names (e.g., expand symlinks)
+ before comparing them. Canonicalization is an expensive operation,
+ but it allows the same file be known by more than one base name.
+ If not set (the default), all source files are assumed to have just
+ one base name, and gdb will do file name comparisons more efficiently.
+
+set trace-user
+show trace-user
+set trace-notes
+show trace-notes
+ Set a user name and notes for the current and any future trace runs.
+ This is useful for long-running and/or disconnected traces, to
+ inform others (or yourself) as to who is running the trace, supply
+ contact information, or otherwise explain what is going on.
+
+set trace-stop-notes
+show trace-stop-notes
+ Set a note attached to the trace run, that is displayed when the
+ trace has been stopped by a tstop command. This is useful for
+ instance as an explanation, if you are stopping a trace run that was
+ started by someone else.
+
* New remote packets
QTEnable
Dynamically disable a tracepoint in a started trace experiment.
+QTNotes
+
+ Set the user and notes of the trace run.
+
+qTP
+
+ Query the current status of a tracepoint.
+
+qTMinFTPILen
+
+ Query the minimum length of instruction at which a fast tracepoint may
+ be placed.
+
* Dcache size (number of lines) and line-size are now runtime-configurable
via "set dcache line" and "set dcache line-size" commands.
Texas Instruments TMS320C6x tic6x-*-*
+* New Simulators
+
+Renesas RL78 rl78-*-elf
+
*** Changes in GDB 7.3.1
* The build failure for NetBSD and OpenBSD targets have now been fixed.