What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 6.8
+*** Changes since GDB 7.1
+
+* Windows Thread Information Block access.
+
+ On Windows targets, GDB now supports displaying the Windows Thread
+ Information Block (TIB) structure. This structure is visible either
+ by using the new command `info w32 thread-information-block' or, by
+ dereferencing the new convenience variable named `$_tlb', a
+ thread-specific pointer to the TIB. This feature is also supported
+ when remote debugging using GDBserver.
+
+* New remote packets
+
+qGetTIBAddr
+
+ Return the address of the Windows Thread Information Block of a given thread.
+
+qRelocInsn
+
+ In response to several of the tracepoint packets, the target may now
+ also respond with a number of intermediate `qRelocInsn' request
+ packets before the final result packet, to have GDB handle
+ relocating an instruction to execute at a different address. This
+ is particularly useful for stubs that support fast tracepoints. GDB
+ reports support for this feature in the qSupported packet.
+
+* The source command now accepts a -s option to force searching for the
+ script in the source search path even if the script name specifies
+ a directory.
+
+* New features in the GDB remote stub, GDBserver
+
+ - GDBserver now support tracepoints. The feature is currently
+ supported by the i386-linux and amd64-linux builds.
+
+ - GDBserver now supports x86_64 Windows 64-bit debugging.
+
+* GDB now sends xmlRegisters= in qSupported packet to indicate that
+ it understands register description.
+
+* The --batch flag now disables pagination and queries.
+
+* X86 general purpose registers
+
+ GDB now supports reading/writing byte, word and double-word x86
+ general purpose registers directly. This means you can use, say,
+ $ah or $ax to refer, respectively, to the byte register AH and
+ 16-bit word register AX that are actually portions of the 32-bit
+ register EAX or 64-bit register RAX.
+
+* The `commands' command now accepts a range of breakpoints to modify.
+ A plain `commands' following a command that creates multiple
+ breakpoints affects all the breakpoints set by that command. This
+ applies to breakpoints set by `rbreak', and also applies when a
+ single `break' command creates multiple breakpoints (e.g.,
+ breakpoints on overloaded c++ functions).
+
+* The `rbreak' command now accepts a filename specification as part of
+ its argument, limiting the functions selected by the regex to those
+ in the specified file.
+
+* Support for remote debugging Windows and SymbianOS shared libraries
+ from Unix hosts has been improved. Non Windows GDB builds now can
+ understand target reported file names that follow MS-DOS based file
+ system semantics, such as file names that include drive letters and
+ use the backslash character as directory separator. This makes it
+ possible to transparently use the "set sysroot" and "set
+ solib-search-path" on Unix hosts to point as host copies of the
+ target's shared libraries. See the new command "set
+ target-file-system-kind" described below, and the "Commands to
+ specify files" section in the user manual for more information.
+
+* New commands
+
+set target-file-system-kind unix|dos-based|auto
+show target-file-system-kind
+ Set or show the assumed file system kind for target reported file
+ names.
+
+save breakpoints <filename>
+ Save all current breakpoint definitions to a file suitable for use
+ in a later debugging session. To read the saved breakpoint
+ definitions, use the `source' command.
+
+`save tracepoints' is a new alias for `save-tracepoints'. The latter
+is now deprecated.
+
+* Python scripting
+
+** The GDB Python API now has access to breakpoints, symbols, symbol
+ tables, program spaces, and frame's code blocks. Additionally, GDB
+ Parameters can now be created from the API, and manipulated via
+ set/show in the CLI.
+
+** New functions gdb.target_charset, gdb.target_wide_charset,
+ gdb.progspaces, gdb.current_progspace, and gdb.string_to_argv.
+
+** New exception gdb.GdbError.
+
+** Pretty-printers are now also looked up in the current program space.
+
+** GDB now looks for names of Python scripts to auto-load in a
+ special section named `.debug_gdb_scripts', in addition to looking
+ for a OBJFILE-gdb.py script when OBJFILE is read by the debugger.
+
+* Tracepoint actions were unified with breakpoint commands. In particular,
+there are no longer differences in "info break" output for breakpoints and
+tracepoints and the "commands" command can be used for both tracepoints and
+regular breakpoints.
+
+* New targets
+
+ARM Symbian arm*-*-symbianelf*
+
+* D language support.
+ GDB now supports debugging programs written in the D programming
+ language.
+
+*** Changes in GDB 7.1
+
+* C++ Improvements
+
+ ** Namespace Support
+
+ GDB now supports importing of namespaces in C++. This enables the
+ user to inspect variables from imported namespaces. Support for
+ namepace aliasing has also been added. So, if a namespace is
+ aliased in the current scope (e.g. namepace C=A; ) the user can
+ print variables using the alias (e.g. (gdb) print C::x).
+
+ ** Bug Fixes
+
+ All known bugs relating to the printing of virtual base class were
+ fixed. It is now possible to call overloaded static methods using a
+ qualified name.
+
+ ** Cast Operators
+
+ The C++ cast operators static_cast<>, dynamic_cast<>, const_cast<>,
+ and reinterpret_cast<> are now handled by the C++ expression parser.
+
+* New targets
+
+Xilinx MicroBlaze microblaze-*-*
+Renesas RX rx-*-elf
+
+* New Simulators
+
+Xilinx MicroBlaze microblaze
+Renesas RX rx
+
+* Multi-program debugging.
+
+ GDB now has support for multi-program (a.k.a. multi-executable or
+ multi-exec) debugging. This allows for debugging multiple inferiors
+ simultaneously each running a different program under the same GDB
+ session. See "Debugging Multiple Inferiors and Programs" in the
+ manual for more information. This implied some user visible changes
+ in the multi-inferior support. For example, "info inferiors" now
+ lists inferiors that are not running yet or that have exited
+ already. See also "New commands" and "New options" below.
+
+* New tracing features
+
+ GDB's tracepoint facility now includes several new features:
+
+ ** Trace state variables
+
+ GDB tracepoints now include support for trace state variables, which
+ are variables managed by the target agent during a tracing
+ experiment. They are useful for tracepoints that trigger each
+ other, so for instance one tracepoint can count hits in a variable,
+ and then a second tracepoint has a condition that is true when the
+ count reaches a particular value. Trace state variables share the
+ $-syntax of GDB convenience variables, and can appear in both
+ tracepoint actions and condition expressions. Use the "tvariable"
+ command to create, and "info tvariables" to view; see "Trace State
+ Variables" in the manual for more detail.
+
+ ** Fast tracepoints
+
+ GDB now includes an option for defining fast tracepoints, which
+ targets may implement more efficiently, such as by installing a jump
+ into the target agent rather than a trap instruction. The resulting
+ speedup can be by two orders of magnitude or more, although the
+ tradeoff is that some program locations on some target architectures
+ might not allow fast tracepoint installation, for instance if the
+ instruction to be replaced is shorter than the jump. To request a
+ fast tracepoint, use the "ftrace" command, with syntax identical to
+ the regular trace command.
+
+ ** Disconnected tracing
+
+ It is now possible to detach GDB from the target while it is running
+ a trace experiment, then reconnect later to see how the experiment
+ is going. In addition, a new variable disconnected-tracing lets you
+ tell the target agent whether to continue running a trace if the
+ connection is lost unexpectedly.
+
+ ** Trace files
+
+ GDB now has the ability to save the trace buffer into a file, and
+ then use that file as a target, similarly to you can do with
+ corefiles. You can select trace frames, print data that was
+ collected in them, and use tstatus to display the state of the
+ tracing run at the moment that it was saved. To create a trace
+ file, use "tsave <filename>", and to use it, do "target tfile
+ <name>".
+
+ ** Circular trace buffer
+
+ You can ask the target agent to handle the trace buffer as a
+ circular buffer, discarding the oldest trace frames to make room for
+ newer ones, by setting circular-trace-buffer to on. This feature may
+ not be available for all target agents.
+
+* Changed commands
+
+disassemble
+ The disassemble command, when invoked with two arguments, now requires
+ the arguments to be comma-separated.
+
+info variables
+ The info variables command now displays variable definitions. Files
+ which only declare a variable are not shown.
+
+source
+ The source command is now capable of sourcing Python scripts.
+ This feature is dependent on the debugger being build with Python
+ support.
+
+ Related to this enhancement is also the introduction of a new command
+ "set script-extension" (see below).
+
+* New commands (for set/show, see "New options" below)
+
+record save [<FILENAME>]
+ Save a file (in core file format) containing the process record
+ execution log for replay debugging at a later time.
+
+record restore <FILENAME>
+ Restore the process record execution log that was saved at an
+ earlier time, for replay debugging.
+
+add-inferior [-copies <N>] [-exec <FILENAME>]
+ Add a new inferior.
+
+clone-inferior [-copies <N>] [ID]
+ Make a new inferior ready to execute the same program another
+ inferior has loaded.
+
+remove-inferior ID
+ Remove an inferior.
+
+maint info program-spaces
+ List the program spaces loaded into GDB.
+
+set remote interrupt-sequence [Ctrl-C | BREAK | BREAK-g]
+show remote interrupt-sequence
+ Allow the user to select one of ^C, a BREAK signal or BREAK-g
+ as the sequence to the remote target in order to interrupt the execution.
+ Ctrl-C is a default. Some system prefers BREAK which is high level of
+ serial line for some certain time. Linux kernel prefers BREAK-g, a.k.a
+ Magic SysRq g. It is BREAK signal and character 'g'.
+
+set remote interrupt-on-connect [on | off]
+show remote interrupt-on-connect
+ When interrupt-on-connect is ON, gdb sends interrupt-sequence to
+ remote target when gdb connects to it. This is needed when you debug
+ Linux kernel.
+
+set remotebreak [on | off]
+show remotebreak
+Deprecated. Use "set/show remote interrupt-sequence" instead.
+
+tvariable $NAME [ = EXP ]
+ Create or modify a trace state variable.
+
+info tvariables
+ List trace state variables and their values.
+
+delete tvariable $NAME ...
+ Delete one or more trace state variables.
+
+teval EXPR, ...
+ Evaluate the given expressions without collecting anything into the
+ trace buffer. (Valid in tracepoint actions only.)
+
+ftrace FN / FILE:LINE / *ADDR
+ Define a fast tracepoint at the given function, line, or address.
+
+* New expression syntax
+
+ GDB now parses the 0b prefix of binary numbers the same way as GCC does.
+ GDB now parses 0b101010 identically with 42.
+
+* New options
+
+set follow-exec-mode new|same
+show follow-exec-mode
+ Control whether GDB reuses the same inferior across an exec call or
+ creates a new one. This is useful to be able to restart the old
+ executable after the inferior having done an exec call.
+
+set default-collect EXPR, ...
+show default-collect
+ Define a list of expressions to be collected at each tracepoint.
+ This is a useful way to ensure essential items are not overlooked,
+ such as registers or a critical global variable.
+
+set disconnected-tracing
+show disconnected-tracing
+ If set to 1, the target is instructed to continue tracing if it
+ loses its connection to GDB. If 0, the target is to stop tracing
+ upon disconnection.
+
+set circular-trace-buffer
+show circular-trace-buffer
+ If set to on, the target is instructed to use a circular trace buffer
+ and discard the oldest trace frames instead of stopping the trace due
+ to a full trace buffer. If set to off, the trace stops when the buffer
+ fills up. Some targets may not support this.
+
+set script-extension off|soft|strict
+show script-extension
+ If set to "off", the debugger does not perform any script language
+ recognition, and all sourced files are assumed to be GDB scripts.
+ If set to "soft" (the default), files are sourced according to
+ filename extension, falling back to GDB scripts if the first
+ evaluation failed.
+ If set to "strict", files are sourced according to filename extension.
+
+set ada trust-PAD-over-XVS on|off
+show ada trust-PAD-over-XVS
+ If off, activate a workaround against a bug in the debugging information
+ generated by the compiler for PAD types (see gcc/exp_dbug.ads in
+ the GCC sources for more information about the GNAT encoding and
+ PAD types in particular). It is always safe to set this option to
+ off, but this introduces a slight performance penalty. The default
+ is on.
+
+* Python API Improvements
+
+ ** GDB provides the new class gdb.LazyString. This is useful in
+ some pretty-printing cases. The new method gdb.Value.lazy_string
+ provides a simple way to create objects of this type.
+
+ ** The fields returned by gdb.Type.fields now have an
+ `is_base_class' attribute.
+
+ ** The new method gdb.Type.range returns the range of an array type.
+
+ ** The new method gdb.parse_and_eval can be used to parse and
+ evaluate an expression.
+
+* New remote packets
+
+QTDV
+ Define a trace state variable.
+
+qTV
+ Get the current value of a trace state variable.
+
+QTDisconnected
+ Set desired tracing behavior upon disconnection.
+
+QTBuffer:circular
+ Set the trace buffer to be linear or circular.
+
+qTfP, qTsP
+ Get data about the tracepoints currently in use.
+
+* Bug fixes
+
+Process record now works correctly with hardware watchpoints.
+
+Multiple bug fixes have been made to the mips-irix port, making it
+much more reliable. In particular:
+ - Debugging threaded applications is now possible again. Previously,
+ GDB would hang while starting the program, or while waiting for
+ the program to stop at a breakpoint.
+ - Attaching to a running process no longer hangs.
+ - An error occurring while loading a core file has been fixed.
+ - Changing the value of the PC register now works again. This fixes
+ problems observed when using the "jump" command, or when calling
+ a function from GDB, or even when assigning a new value to $pc.
+ - With the "finish" and "return" commands, the return value for functions
+ returning a small array is now correctly printed.
+ - It is now possible to break on shared library code which gets executed
+ during a shared library init phase (code executed while executing
+ their .init section). Previously, the breakpoint would have no effect.
+ - GDB is now able to backtrace through the signal handler for
+ non-threaded programs.
+
+PIE (Position Independent Executable) programs debugging is now supported.
+This includes debugging execution of PIC (Position Independent Code) shared
+libraries although for that, it should be possible to run such libraries as an
+executable program.
+
+*** Changes in GDB 7.0
+
+* GDB now has an interface for JIT compilation. Applications that
+dynamically generate code can create symbol files in memory and register
+them with GDB. For users, the feature should work transparently, and
+for JIT developers, the interface is documented in the GDB manual in the
+"JIT Compilation Interface" chapter.
+
+* Tracepoints may now be conditional. The syntax is as for
+breakpoints; either an "if" clause appended to the "trace" command,
+or the "condition" command is available. GDB sends the condition to
+the target for evaluation using the same bytecode format as is used
+for tracepoint actions.
+
+* "disassemble" command with a /r modifier, print the raw instructions
+in hex as well as in symbolic form.
* Process record and replay
with the `remote:' prefix, either via the `set sysroot' command or via
the `--with-sysroot' configure-time option.
+* "info sharedlibrary" now takes an optional regex of libraries to show,
+and it now reports if a shared library has no debugging information.
+
* Commands `set debug-file-directory', `set solib-search-path' and `set args'
now complete on file names.
macros.
* GDB now supports inspecting extra signal information, exported by
- the new $_siginfo convenience variable. The feature is currently
- implemented on linux ARM, i386 and amd64.
+the new $_siginfo convenience variable. The feature is currently
+implemented on linux ARM, i386 and amd64.
+
+* GDB can now display the VFP floating point registers and NEON vector
+registers on ARM targets. Both ARM GNU/Linux native GDB and gdbserver
+can provide these registers (requires Linux 2.6.30 or later). Remote
+and simulator targets may also provide them.
* New remote packets
- Support for the sparc64-linux-gnu target is now included in
gdbserver.
+ - The amd64-linux build of gdbserver now supports debugging both
+ 32-bit and 64-bit programs.
+
+ - The i386-linux, amd64-linux, and i386-win32 builds of gdbserver
+ now support hardware watchpoints, and will use them automatically
+ as appropriate.
+
* Python scripting
GDB now has support for scripting using Python. Whether this is
* Support for user-defined prefixed commands. The "define" command can
add new commands to existing prefixes, e.g. "target".
+* Multi-inferior, multi-process debugging.
+
+ GDB now has generalized support for multi-inferior debugging. See
+ "Debugging Multiple Inferiors" in the manual for more information.
+ Although availability still depends on target support, the command
+ set is more uniform now. The GNU/Linux specific multi-forks support
+ has been migrated to this new framework. This implied some user
+ visible changes; see "New commands" and also "Removed commands"
+ below.
+
+* Target descriptions can now describe the target OS ABI. See the
+"Target Description Format" section in the user manual for more
+information.
+
+* Target descriptions can now describe "compatible" architectures
+to indicate that the target can execute applications for a different
+architecture in addition to those for the main target architecture.
+See the "Target Description Format" section in the user manual for
+more information.
+
+* Multi-architecture debugging.
+
+ GDB now includes general supports for debugging applications on
+ hybrid systems that use more than one single processor architecture
+ at the same time. Each such hybrid architecture still requires
+ specific support to be added. The only hybrid architecture supported
+ in this version of GDB is the Cell Broadband Engine.
+
+* GDB now supports integrated debugging of Cell/B.E. applications that
+use both the PPU and SPU architectures. To enable support for hybrid
+Cell/B.E. debugging, you need to configure GDB to support both the
+powerpc-linux or powerpc64-linux and the spu-elf targets, using the
+--enable-targets configure option.
+
+* Non-stop mode debugging.
+
+ For some targets, GDB now supports an optional mode of operation in
+ which you can examine stopped threads while other threads continue
+ to execute freely. This is referred to as non-stop mode, with the
+ old mode referred to as all-stop mode. See the "Non-Stop Mode"
+ section in the user manual for more information.
+
+ To be able to support remote non-stop debugging, a remote stub needs
+ to implement the non-stop mode remote protocol extensions, as
+ described in the "Remote Non-Stop" section of the user manual. The
+ GDB remote stub, gdbserver, has been adjusted to support these
+ extensions on linux targets.
+
* New commands (for set/show, see "New options" below)
+catch syscall [NAME(S) | NUMBER(S)]
+ Catch system calls. Arguments, which should be names of system
+ calls or their numbers, mean catch only those syscalls. Without
+ arguments, every syscall will be caught. When the inferior issues
+ any of the specified syscalls, GDB will stop and announce the system
+ call, both when it is called and when its call returns. This
+ feature is currently available with a native GDB running on the
+ Linux Kernel, under the following architectures: x86, x86_64,
+ PowerPC and PowerPC64.
+
find [/size-char] [/max-count] start-address, end-address|+search-space-size,
val1 [, val2, ...]
Search memory for a sequence of bytes.
info os processes
Show operating system information about processes.
+info inferiors
+ List the inferiors currently under GDB's control.
+
+inferior NUM
+ Switch focus to inferior number NUM.
+
+detach inferior NUM
+ Detach from inferior number NUM.
+
+kill inferior NUM
+ Kill inferior number NUM.
+
* New options
+set spu stop-on-load
+show spu stop-on-load
+ Control whether to stop for new SPE threads during Cell/B.E. debugging.
+
+set spu auto-flush-cache
+show spu auto-flush-cache
+ Control whether to automatically flush the software-managed cache
+ during Cell/B.E. debugging.
+
set sh calling-convention
show sh calling-convention
Control the calling convention used when calling SH target functions.
-set print symbol-loading
-show print symbol-loading
- Control printing of symbol loading messages.
-
set debug timestamp
show debug timestamp
Control display of timestamps with GDB debugging output.
Control use of remote protocol `qXfer:siginfo:write' (write-siginfo-object)
packet.
+set remote reverse-continue
+show remote reverse-continue
+ Control use of remote protocol 'bc' (reverse-continue) packet.
+
+set remote reverse-step
+show remote reverse-step
+ Control use of remote protocol 'bs' (reverse-step) packet.
+
set displaced-stepping
show displaced-stepping
Control displaced stepping mode. Displaced stepping is a way to
Allow GDB to resume all threads of all processes or only threads of
the current process.
+set stack-cache
+show stack-cache
+ Use more aggressive caching for accesses to the stack. This improves
+ performance of remote debugging (particularly backtraces) without
+ affecting correctness.
+
+set interactive-mode (on|off|auto)
+show interactive-mode
+ Control whether GDB runs in interactive mode (on) or not (off).
+ When in interactive mode, GDB waits for the user to answer all
+ queries. Otherwise, GDB does not wait and assumes the default
+ answer. When set to auto (the default), GDB determines which
+ mode to use based on the stdin settings.
+
+* Removed commands
+
+info forks
+ For program forks, this is replaced by the new more generic `info
+ inferiors' command. To list checkpoints, you can still use the
+ `info checkpoints' command, which was an alias for the `info forks'
+ command.
+
+fork NUM
+ Replaced by the new `inferior' command. To switch between
+ checkpoints, you can still use the `restart' command, which was an
+ alias for the `fork' command.
+
+process PID
+ This is removed, since some targets don't have a notion of
+ processes. To switch between processes, you can still use the
+ `inferior' command using GDB's own inferior number.
+
+delete fork NUM
+ For program forks, this is replaced by the new more generic `kill
+ inferior' command. To delete a checkpoint, you can still use the
+ `delete checkpoint' command, which was an alias for the `delete
+ fork' command.
+
+detach fork NUM
+ For program forks, this is replaced by the new more generic `detach
+ inferior' command. To detach a checkpoint, you can still use the
+ `detach checkpoint' command, which was an alias for the `detach
+ fork' command.
+
* New native configurations
x86/x86_64 Darwin i[34567]86-*-darwin*
Lattice Mico32 lm32-*
x86 DICOS i[34567]86-*-dicos*
x86_64 DICOS x86_64-*-dicos*
+S+core 3 score-*-*
* The GDB remote stub, gdbserver, now supports x86 Windows CE
(mingw32ce) debugging.