blob: 3823f20cbb1cf5102db9766a626bbfdc7b640d97 [file] [log] [blame]
What has changed in GDB?
(Organized release by release)
*** Changes since GDB 7.11
* 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.
* GDB now supports multibit bitfields and enums in target register
* New Python-based convenience function $_as_string(val), which returns
the textual representation of a value. This function is especially
useful to obtain the text label of an enum value.
* Intel MPX bound violation handling.
Segmentation faults caused by a Intel MPX boundary violation
now display the kind of violation (upper or lower), the memory
address accessed and the memory bounds, along with the usual
signal received and code location.
For example:
Program received signal SIGSEGV, Segmentation fault
Upper bound violation while accessing address 0x7fffffffc3b3
Bounds: [lower = 0x7fffffffc390, upper = 0x7fffffffc3a3]
0x0000000000400d7c in upper () at i386-mpx-sigsegv.c:68
* Rust language support.
GDB now supports debugging programs written in the Rust programming
language. See for more information about
* Support for running interpreters on specified input/output devices
GDB now supports a new mechanism that allows frontends to provide
fully featured GDB console views, as a better alternative to
building such views on top of the "-interpreter-exec console"
command. See the new "new-ui" command below. With that command,
frontends can now start GDB in the traditional command-line mode
running in an embedded terminal emulator widget, and create a
separate MI interpreter running on a specified i/o device. In this
way, GDB handles line editing, history, tab completion, etc. in the
console all by itself, and the GUI uses the separate MI interpreter
for its own control and synchronization, invisible to the command
* 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 struture.
maint selftest
Run any GDB unit tests that were compiled in.
Start a new user interface instance running INTERP as interpreter,
using the TTY file for input/output.
* 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:
* New targets
Andes NDS32 nds32*-*-elf
*** Changes in GDB 7.11
* GDB now supports debugging kernel-based threads on FreeBSD.
* Per-inferior thread numbers
Thread numbers are now per inferior instead of global. If you're
debugging multiple inferiors, GDB displays thread IDs using a
qualified INF_NUM.THR_NUM form. For example:
(gdb) info threads
Id Target Id Frame
1.1 Thread 0x7ffff7fc2740 (LWP 8155) (running)
1.2 Thread 0x7ffff7fc1700 (LWP 8168) (running)
* 2.1 Thread 0x7ffff7fc2740 (LWP 8157) (running)
2.2 Thread 0x7ffff7fc1700 (LWP 8190) (running)
As consequence, thread numbers as visible in the $_thread
convenience variable and in Python's InferiorThread.num attribute
are no longer unique between inferiors.
GDB now maintains a second thread ID per thread, referred to as the
global thread ID, which is the new equivalent of thread numbers in
previous releases. See also $_gthread below.
For backwards compatibility, MI's thread IDs always refer to global
* Commands that accept thread IDs now accept the qualified
INF_NUM.THR_NUM form as well. For example:
(gdb) thread 2.1
[Switching to thread 2.1 (Thread 0x7ffff7fc2740 (LWP 8157))] (running)
* In commands that accept a list of thread IDs, you can now refer to
all threads of an inferior using a star wildcard. GDB accepts
"INF_NUM.*", to refer to all threads of inferior INF_NUM, and "*" to
refer to all threads of the current inferior. For example, "info
threads 2.*".
* You can use "info threads -gid" to display the global thread ID of
all threads.
* The new convenience variable $_gthread holds the global number of
the current thread.
* The new convenience variable $_inferior holds the number of the
current inferior.
* GDB now displays the ID and name of the thread that hit a breakpoint
or received a signal, if your program is multi-threaded. For
Thread 3 "bar" hit Breakpoint 1 at 0x40087a: file program.c, line 20.
Thread 1 "main" received signal SIGINT, Interrupt.
* Record btrace now supports non-stop mode.
* Support for tracepoints on aarch64-linux was added in GDBserver.
* The 'record instruction-history' command now indicates speculative execution
when using the Intel Processor Trace recording format.
* GDB now allows users to specify explicit locations, bypassing
the linespec parser. This feature is also available to GDB/MI
* Multi-architecture debugging is supported on AArch64 GNU/Linux.
GDB now is able to debug both AArch64 applications and ARM applications
at the same time.
* Support for fast tracepoints on aarch64-linux was added in GDBserver,
including JIT compiling fast tracepoint's conditional expression bytecode
into native code.
* GDB now supports displaced stepping on AArch64 GNU/Linux.
* "info threads", "info inferiors", "info display", "info checkpoints"
and "maint info program-spaces" now list the corresponding items in
ascending ID order, for consistency with all other "info" commands.
* In Ada, the overloads selection menu has been enhanced to display the
parameter types and the return types for the matching overloaded subprograms.
* New commands
maint set target-non-stop (on|off|auto)
maint show target-non-stop
Control whether GDB targets always operate in non-stop mode even if
"set non-stop" is "off". The default is "auto", meaning non-stop
mode is enabled if supported by the target.
maint set bfd-sharing
maint show bfd-sharing
Control the reuse of bfd objects.
set debug bfd-cache
show debug bfd-cache
Control display of debugging info regarding bfd caching.
set debug fbsd-lwp
show debug fbsd-lwp
Control display of debugging info regarding FreeBSD threads.
set remote multiprocess-extensions-packet
show remote multiprocess-extensions-packet
Set/show the use of the remote protocol multiprocess extensions.
set remote thread-events
show remote thread-events
Set/show the use of thread create/exit events.
set ada print-signatures on|off
show ada print-signatures"
Control whether parameter types and return types are displayed in overloads
selection menus. It is activaled (@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.
* New remote packets
exec stop reason
Indicates that an exec system call was executed.
exec-events feature in qSupported
The qSupported packet allows GDB to request support for exec
events using the new 'gdbfeature' exec-event, and the qSupported
response can contain the corresponding 'stubfeature'. Set and
show commands can be used to display whether these features are enabled.
Equivalent to interrupting with the ^C character, but works in
non-stop mode.
thread created stop reason (T05 create:...)
Indicates that the thread was just created and is stopped at entry.
thread exit stop reply (w exitcode;tid)
Indicates that the thread has terminated.
Enables/disables thread create and exit event reporting. For
example, this is used in non-stop mode when GDB stops a set of
threads and synchronously waits for the their corresponding stop
replies. Without exit events, if one of the threads exits, GDB
would hang forever not knowing that it should no longer expect a
stop for that same thread.
N stop reply
Indicates that there are no resumed threads left in the target (all
threads are stopped). The remote stub reports support for this stop
reply to GDB's qSupported query.
Enables/disables catching syscalls from the inferior process.
The remote stub reports support for this packet to GDB's qSupported query.
syscall_entry stop reason
Indicates that a syscall was just called.
syscall_return stop reason
Indicates that a syscall just returned.
* Extended-remote exec events
** GDB now has support for exec events on extended-remote Linux targets.
For such targets with Linux kernels 2.5.46 and later, this enables
follow-exec-mode and exec catchpoints.
set remote exec-event-feature-packet
show remote exec-event-feature-packet
Set/show the use of the remote exec event feature.
* Thread names in remote protocol
The reply to qXfer:threads:read may now include a name attribute for each
* Target remote mode fork and exec events
** GDB now has support for fork and exec events on target remote mode
Linux targets. For such targets with Linux kernels 2.5.46 and later,
this enables follow-fork-mode, detach-on-fork, follow-exec-mode, and
fork and exec catchpoints.
* Remote syscall events
** GDB now has support for catch syscall on remote Linux targets,
currently enabled on x86/x86_64 architectures.
set remote catch-syscall-packet
show remote catch-syscall-packet
Set/show the use of the remote catch syscall feature.
* MI changes
** The -var-set-format command now accepts the zero-hexadecimal
format. It outputs data in hexadecimal format with zero-padding on the
* Python Scripting
** gdb.InferiorThread objects have a new attribute "global_num",
which refers to the thread's global thread ID. The existing
"num" attribute now refers to the thread's per-inferior number.
See "Per-inferior thread numbers" above.
** gdb.InferiorThread objects have a new attribute "inferior", which
is the Inferior object the thread belongs to.
*** Changes in GDB 7.10
* Support for process record-replay and reverse debugging on aarch64*-linux*
targets has been added. GDB now supports recording of A64 instruction set
including advance SIMD instructions.
* Support for Sun's version of the "stabs" debug file format has been removed.
* GDB now honors the content of the file /proc/PID/coredump_filter
(PID is the process ID) on GNU/Linux systems. This file can be used
to specify the types of memory mappings that will be included in a
corefile. For more information, please refer to the manual page of
"core(5)". GDB also has a new command: "set use-coredump-filter
on|off". It allows to set whether GDB will read the content of the
/proc/PID/coredump_filter file when generating a corefile.
* The "info os" command on GNU/Linux can now display information on
cpu information :
"info os cpus" Listing of all cpus/cores on the system
* GDB has two new commands: "set serial parity odd|even|none" and
"show serial parity". These allows to set or show parity for the
remote serial I/O.
* The "info source" command now displays the producer string if it was
present in the debug info. This typically includes the compiler version
and may include things like its command line arguments.
* The "info dll", an alias of the "info sharedlibrary" command,
is now available on all platforms.
* Directory names supplied to the "set sysroot" commands may be
prefixed with "target:" to tell GDB to access shared libraries from
the target system, be it local or remote. This replaces the prefix
"remote:". The default sysroot has been changed from "" to
"target:". "remote:" is automatically converted to "target:" for
backward compatibility.
* The system root specified by "set sysroot" will be prepended to the
filename of the main executable (if reported to GDB as absolute by
the operating system) when starting processes remotely, and when
attaching to already-running local or remote processes.
* GDB now supports automatic location and retrieval of executable
files from remote targets. Remote debugging can now be initiated
using only a "target remote" or "target extended-remote" command
(no "set sysroot" or "file" commands are required). See "New remote
packets" below.
* The "dump" command now supports verilog hex format.
* GDB now supports the vector ABI on S/390 GNU/Linux targets.
* On GNU/Linux, GDB and gdbserver are now able to access executable
and shared library files without a "set sysroot" command when
attaching to processes running in different mount namespaces from
the debugger. This makes it possible to attach to processes in
containers as simply as "gdb -p PID" or "gdbserver --attach PID".
See "New remote packets" below.
* The "tui reg" command now provides completion for all of the
available register groups, including target specific groups.
* The HISTSIZE environment variable is no longer read when determining
the size of GDB's command history. GDB now instead reads the dedicated
GDBHISTSIZE environment variable. Setting GDBHISTSIZE to "-1" or to "" now
disables truncation of command history. Non-numeric values of GDBHISTSIZE
are ignored.
* Guile Scripting
** Memory ports can now be unbuffered.
* Python Scripting
** gdb.Objfile objects have a new attribute "username",
which is the name of the objfile as specified by the user,
without, for example, resolving symlinks.
** You can now write frame unwinders in Python.
** gdb.Type objects have a new method "optimized_out",
returning optimized out gdb.Value instance of this type.
** gdb.Value objects have new methods "reference_value" and
"const_value" which return a reference to the value and a
"const" version of the value respectively.
* New commands
maint print symbol-cache
Print the contents of the symbol cache.
maint print symbol-cache-statistics
Print statistics of symbol cache usage.
maint flush-symbol-cache
Flush the contents of the symbol cache.
record btrace bts
record bts
Start branch trace recording using Branch Trace Store (BTS) format.
compile print
Evaluate expression by using the compiler and print result.
tui enable
tui disable
Explicit commands for enabling and disabling tui mode.
show mpx bound
set mpx bound on i386 and amd64
Support for bound table investigation on Intel MPX enabled applications.
record btrace pt
record pt
Start branch trace recording using Intel Processor Trace format.
maint info btrace
Print information about branch tracing internals.
maint btrace packet-history
Print the raw branch tracing data.
maint btrace clear-packet-history
Discard the stored raw branch tracing data.
maint btrace clear
Discard all branch tracing data. It will be fetched and processed
anew by the next "record" command.
* New options
set debug dwarf-die
Renamed from "set debug dwarf2-die".
show debug dwarf-die
Renamed from "show debug dwarf2-die".
set debug dwarf-read
Renamed from "set debug dwarf2-read".
show debug dwarf-read
Renamed from "show debug dwarf2-read".
maint set dwarf always-disassemble
Renamed from "maint set dwarf2 always-disassemble".
maint show dwarf always-disassemble
Renamed from "maint show dwarf2 always-disassemble".
maint set dwarf max-cache-age
Renamed from "maint set dwarf2 max-cache-age".
maint show dwarf max-cache-age
Renamed from "maint show dwarf2 max-cache-age".
set debug dwarf-line
show debug dwarf-line
Control display of debugging info regarding DWARF line processing.
set max-completions
show max-completions
Set the maximum number of candidates to be considered during
completion. The default value is 200. This limit allows GDB
to avoid generating large completion lists, the computation of
which can cause the debugger to become temporarily unresponsive.
set history remove-duplicates
show history remove-duplicates
Control the removal of duplicate history entries.
maint set symbol-cache-size
maint show symbol-cache-size
Control the size of the symbol cache.
set|show record btrace bts buffer-size
Set and show the size of the ring buffer used for branch tracing in
BTS format.
The obtained size may differ from the requested size. Use "info
record" to see the obtained buffer size.
set debug linux-namespaces
show debug linux-namespaces
Control display of debugging info regarding Linux namespaces.
set|show record btrace pt buffer-size
Set and show the size of the ring buffer used for branch tracing in
Intel Processor Trace format.
The obtained size may differ from the requested size. Use "info
record" to see the obtained buffer size.
maint set|show btrace pt skip-pad
Set and show whether PAD packets are skipped when computing the
packet history.
* The command 'thread apply all' can now support new option '-ascending'
to call its specified command for all threads in ascending order.
* Python/Guile scripting
** GDB now supports auto-loading of Python/Guile scripts contained in the
special section named `.debug_gdb_scripts'.
* New remote packets
Return the branch trace configuration for the current thread.
Set the requested ring buffer size for branch tracing in BTS format.
Enable Intel Procesor Trace-based branch tracing for the current
process. The remote stub reports support for this packet to GDB's
qSupported query.
Set the requested ring buffer size for branch tracing in Intel Processor
Trace format.
swbreak stop reason
Indicates a memory breakpoint instruction was executed, irrespective
of whether it was GDB that planted the breakpoint or the breakpoint
is hardcoded in the program. This is required for correct non-stop
mode operation.
hwbreak stop reason
Indicates the target stopped for a hardware breakpoint. This is
required for correct non-stop mode operation.
Return information about files on the remote system.
Return the full absolute name of the file that was executed to
create a process running on the remote system.
Select the filesystem on which vFile: operations with filename
arguments will operate. This is required for GDB to be able to
access files on remote targets where the remote stub does not
share a common filesystem with the inferior(s).
fork stop reason
Indicates that a fork system call was executed.
vfork stop reason
Indicates that a vfork system call was executed.
vforkdone stop reason
Indicates that a vfork child of the specified process has executed
an exec or exit, allowing the vfork parent to resume execution.
fork-events and vfork-events features in qSupported
The qSupported packet allows GDB to request support for fork and
vfork events using new 'gdbfeatures' fork-events and vfork-events,
and the qSupported response can contain the corresponding
'stubfeatures'. Set and show commands can be used to display
whether these features are enabled.
* Extended-remote fork events
** GDB now has support for fork events on extended-remote Linux
targets. For targets with Linux kernels 2.5.60 and later, this
enables follow-fork-mode and detach-on-fork for both fork and
vfork, as well as fork and vfork catchpoints.
* The info record command now shows the recording format and the
branch tracing configuration for the current thread when using
the btrace record target.
For the BTS format, it shows the ring buffer size.
* GDB now has support for DTrace USDT (Userland Static Defined
Tracing) probes. The supported targets are x86_64-*-linux-gnu.
* GDB now supports access to vector registers on S/390 GNU/Linux
* Removed command line options
-xdb HP-UX XDB compatibility mode.
* Removed targets and native configurations
HP/PA running HP-UX hppa*-*-hpux*
Itanium running HP-UX ia64-*-hpux*
* New configure options
This configure option allows the user to build GDB with support for
Intel Processor Trace (default: auto). This requires libipt.
Specify the path to the version of libipt that GDB should use.
$PATH/include should contain the intel-pt.h header and
$PATH/lib should contain the library.
*** Changes in GDB 7.9.1
* Python Scripting
** Xmethods can now specify a result type.
*** Changes in GDB 7.9
* GDB now supports hardware watchpoints on x86 GNU Hurd.
* Python Scripting
** You can now access frame registers from Python scripts.
** New attribute 'producer' for gdb.Symtab objects.
** gdb.Objfile objects have a new attribute "progspace",
which is the gdb.Progspace object of the containing program space.
** gdb.Objfile objects have a new attribute "owner".
** gdb.Objfile objects have a new attribute "build_id",
which is the build ID generated when the file was built.
** gdb.Objfile objects have a new method "add_separate_debug_file".
** A new event "gdb.clear_objfiles" has been added, triggered when
selecting a new file to debug.
** You can now add attributes to gdb.Objfile and gdb.Progspace objects.
** New function gdb.lookup_objfile.
New events which are triggered when GDB modifies the state of the
** Function call is about to be made.
** Function call has just been made.
** A memory location has been altered.
** A register has been altered.
* New Python-based convenience functions:
** $_caller_is(name [, number_of_frames])
** $_caller_matches(regexp [, number_of_frames])
** $_any_caller_is(name [, number_of_frames])
** $_any_caller_matches(regexp [, number_of_frames])
* GDB now supports the compilation and injection of source code into
the inferior. GDB will use GCC 5.0 or higher built with
to compile the source code to object code, and if successful, inject
and execute that code within the current context of the inferior.
Currently the C language is supported. The commands used to
interface with this new feature are:
compile code [-raw|-r] [--] [source code]
compile file [-raw|-r] filename
* New commands
demangle [-l language] [--] name
Demangle "name" in the specified language, or the current language
if elided. This command is renamed from the "maint demangle" command.
The latter is kept as a no-op to avoid "maint demangle" being interpreted
as "maint demangler-warning".
queue-signal signal-name-or-number
Queue a signal to be delivered to the thread when it is resumed.
add-auto-load-scripts-directory directory
Add entries to the list of directories from which to load auto-loaded
maint print user-registers
List all currently available "user" registers.
compile code [-r|-raw] [--] [source code]
Compile, inject, and execute in the inferior the executable object
code produced by compiling the provided source code.
compile file [-r|-raw] filename
Compile and inject into the inferior the executable object code
produced by compiling the source code stored in the filename
* On resume, GDB now always passes the signal the program had stopped
for to the thread the signal was sent to, even if the user changed
threads before resuming. Previously GDB would often (but not
always) deliver the signal to the thread that happens to be current
at resume time.
* Conversely, the "signal" command now consistently delivers the
requested signal to the current thread. GDB now asks for
confirmation if the program had stopped for a signal and the user
switched threads meanwhile.
* "breakpoint always-inserted" modes "off" and "auto" merged.
Now, when 'breakpoint always-inserted mode' is set to "off", GDB
won't remove breakpoints from the target until all threads stop,
even in non-stop mode. The "auto" mode has been removed, and "off"
is now the default mode.
* New options
set debug symbol-lookup
show debug symbol-lookup
Control display of debugging info regarding symbol lookup.
* MI changes
** The -list-thread-groups command outputs an exit-code field for
inferiors that have exited.
* New targets
MIPS SDE mips*-sde*-elf*
* Removed targets
Support for these obsolete configurations has been removed.
Alpha running OSF/1 (or Tru64) alpha*-*-osf*
SGI Irix-5.x mips-*-irix5*
SGI Irix-6.x mips-*-irix6*
VAX running (4.2 - 4.3 Reno) BSD vax-*-bsd*
VAX running Ultrix vax-*-ultrix*
* The "dll-symbols" command, and its two aliases ("add-shared-symbol-files"
and "assf"), have been removed. Use the "sharedlibrary" command, or
its alias "share", instead.
*** Changes in GDB 7.8
* New command line options
-D data-directory
This is an alias for the --data-directory option.
* GDB supports printing and modifying of variable length automatic arrays
as specified in ISO C99.
* The ARM simulator now supports instruction level tracing
with or without disassembly.
* Guile scripting
GDB now has support for scripting using Guile. Whether this is
available is determined at configure time.
Guile version 2.0 or greater is required.
Guile version 2.0.9 is well tested, earlier 2.0 versions are not.
* New commands (for set/show, see "New options" below)
guile [code]
gu [code]
Invoke CODE by passing it to the Guile interpreter.
Start a Guile interactive prompt (or "repl" for "read-eval-print loop").
info auto-load guile-scripts [regexp]
Print the list of automatically loaded Guile scripts.
* The source command is now capable of sourcing Guile scripts.
This feature is dependent on the debugger being built with Guile support.
* New options
set print symbol-loading (off|brief|full)
show print symbol-loading
Control whether to print informational messages when loading symbol
information for a file. The default is "full", but when debugging
programs with large numbers of shared libraries the amount of output
becomes less useful.
set guile print-stack (none|message|full)
show guile print-stack
Show a stack trace when an error is encountered in a Guile script.
set auto-load guile-scripts (on|off)
show auto-load guile-scripts
Control auto-loading of Guile script files.
maint ada set ignore-descriptive-types (on|off)
maint ada show ignore-descriptive-types
Control whether the debugger should ignore descriptive types in Ada
programs. The default is not to ignore the descriptive types. See
the user manual for more details on descriptive types and the intended
usage of this option.
set auto-connect-native-target
Control whether GDB is allowed to automatically connect to the
native target for the run, attach, etc. commands when not connected
to any target yet. See also "target native" below.
set record btrace replay-memory-access (read-only|read-write)
show record btrace replay-memory-access
Control what memory accesses are allowed during replay.
maint set target-async (on|off)
maint show target-async
This controls whether GDB targets operate in synchronous or
asynchronous mode. Normally the default is asynchronous, if it is
available; but this can be changed to more easily debug problems
occurring only in synchronous mode.
set mi-async (on|off)
show mi-async
Control whether MI asynchronous mode is preferred. This supersedes
"set target-async" of previous GDB versions.
* "set target-async" is deprecated as a CLI option and is now an alias
for "set mi-async" (only puts MI into async mode).
* Background execution commands (e.g., "c&", "s&", etc.) are now
possible ``out of the box'' if the target supports them. Previously
the user would need to explicitly enable the possibility with the
"set target-async on" command.
* New features in the GDB remote stub, GDBserver
** New option --debug-format=option1[,option2,...] allows one to add
additional text to each output. At present only timestamps
are supported: --debug-format=timestamps.
Timestamps can also be turned on with the
"monitor set debug-format timestamps" command from GDB.
* The 'record instruction-history' command now starts counting instructions
at one. This also affects the instruction ranges reported by the
'record function-call-history' command when given the /i modifier.
* The command 'record function-call-history' supports a new modifier '/c' to
indent the function names based on their call stack depth.
The fields for the '/i' and '/l' modifier have been reordered.
The source line range is now prefixed with 'at'.
The instruction range is now prefixed with 'inst'.
Both ranges are now printed as '<from>, <to>' to allow copy&paste to the
"record instruction-history" and "list" commands.
* The ranges given as arguments to the 'record function-call-history' and
'record instruction-history' commands are now inclusive.
* The btrace record target now supports the 'record goto' command.
For locations inside the execution trace, the back trace is computed
based on the information stored in the execution trace.
* The btrace record target supports limited reverse execution and replay.
The target does not record data and therefore does not allow reading
memory or registers.
* The "catch syscall" command now works on s390*-linux* targets.
* The "compare-sections" command is no longer specific to target
remote. It now works with all targets.
* All native targets are now consistently called "native".
Consequently, the "target child", "target GNU", "target djgpp",
"target procfs" (Solaris/Irix/OSF/AIX) and "target darwin-child"
commands have been replaced with "target native". The QNX/NTO port
leaves the "procfs" target in place and adds a "native" target for
consistency with other ports. The impact on users should be minimal
as these commands previously either throwed an error, or were
no-ops. The target's name is visible in the output of the following
commands: "help target", "info target", "info files", "maint print
* The "target native" command now connects to the native target. This
can be used to launch native programs even when "set
auto-connect-native-target" is set to off.
* GDB now supports access to Intel MPX registers on GNU/Linux.
* Support for Intel AVX-512 registers on GNU/Linux.
Support displaying and modifying Intel AVX-512 registers
$zmm0 - $zmm31 and $k0 - $k7 on GNU/Linux.
* New remote packets
qXfer:btrace:read's annex
The qXfer:btrace:read packet supports a new annex 'delta' to read
branch trace incrementally.
* Python Scripting
** Valid Python operations on gdb.Value objects representing
structs/classes invoke the corresponding overloaded operators if
** New `Xmethods' feature in the Python API. Xmethods are
additional methods or replacements for existing methods of a C++
class. This feature is useful for those cases where a method
defined in C++ source code could be inlined or optimized out by
the compiler, making it unavailable to GDB.
* New targets
PowerPC64 GNU/Linux little-endian powerpc64le-*-linux*
* The "dll-symbols" command, and its two aliases ("add-shared-symbol-files"
and "assf"), have been deprecated. Use the "sharedlibrary" command, or
its alias "share", instead.
* The commands "set remotebaud" and "show remotebaud" are no longer
supported. Use "set serial baud" and "show serial baud" (respectively)
* MI changes
** A new option "-gdb-set mi-async" replaces "-gdb-set
target-async". The latter is left as a deprecated alias of the
former for backward compatibility. If the target supports it,
CLI background execution commands are now always possible by
default, independently of whether the frontend stated a
preference for asynchronous execution with "-gdb-set mi-async".
Previously "-gdb-set target-async off" affected both MI execution
commands and CLI execution commands.
*** Changes in GDB 7.7
* Improved support for process record-replay and reverse debugging on
arm*-linux* targets. Support for thumb32 and syscall instruction
recording has been added.
* GDB now supports SystemTap SDT probes on AArch64 GNU/Linux.
* GDB now supports Fission DWP file format version 2.
* New convenience function "$_isvoid", to check whether an expression
is void. A void expression is an expression where the type of the
result is "void". For example, some convenience variables may be
"void" when evaluated (e.g., "$_exitcode" before the execution of
the program being debugged; or an undefined convenience variable).
Another example, when calling a function whose return type is
* The "maintenance print objfiles" command now takes an optional regexp.
* The "catch syscall" command now works on arm*-linux* targets.
* GDB now consistently shows "<not saved>" when printing values of
registers the debug info indicates have not been saved in the frame
and there's nowhere to retrieve them from
(callee-saved/call-clobbered registers):
(gdb) p $rax
$1 = <not saved>
(gdb) info registers rax
rax <not saved>
Before, the former would print "<optimized out>", and the latter
"*value not available*".
* New script contrib/ for adding .gdb_index sections
to binaries.
* Python scripting
** Frame filters and frame decorators have been added.
** Temporary breakpoints are now supported.
** Line tables representation has been added.
** New attribute 'parent_type' for gdb.Field objects.
** gdb.Field objects can be used as subscripts on gdb.Value objects.
** New attribute 'name' for gdb.Type objects.
* New targets
Nios II ELF nios2*-*-elf
Nios II GNU/Linux nios2*-*-linux
Texas Instruments MSP430 msp430*-*-elf
* Removed native configurations
Support for these a.out NetBSD and OpenBSD obsolete configurations has
been removed. ELF variants of these configurations are kept supported.
arm*-*-netbsd* but arm*-*-netbsdelf* is kept supported.
i[34567]86-*-netbsd* but i[34567]86-*-netbsdelf* is kept supported.
i[34567]86-*-openbsd[0-2].* but i[34567]86-*-openbsd* is kept supported.
m68*-*-netbsd* but m68*-*-netbsdelf* is kept supported.
sparc-*-netbsd* but sparc-*-netbsdelf* is kept supported.
vax-*-netbsd* but vax-*-netbsdelf* is kept supported.
* New commands:
catch rethrow
Like "catch throw", but catches a re-thrown exception.
maint check-psymtabs
Renamed from old "maint check-symtabs".
maint check-symtabs
Perform consistency checks on symtabs.
maint expand-symtabs
Expand symtabs matching an optional regexp.
show configuration
Display the details of GDB configure-time options.
maint set|show per-command
maint set|show per-command space
maint set|show per-command time
maint set|show per-command symtab
Enable display of per-command gdb resource usage.
remove-symbol-file FILENAME
remove-symbol-file -a ADDRESS
Remove a symbol file added via add-symbol-file. The file to remove
can be identified by its filename or by an address that lies within
the boundaries of this symbol file in memory.
info exceptions
info exceptions REGEXP
Display the list of Ada exceptions defined in the program being
debugged. If provided, only the exceptions whose names match REGEXP
are listed.
* New options
set debug symfile off|on
show debug symfile
Control display of debugging info regarding reading symbol files and
symbol tables within those files
set print raw frame-arguments
show print raw frame-arguments
Set/show whether to print frame arguments in raw mode,
disregarding any defined pretty-printers.
set remote trace-status-packet
show remote trace-status-packet
Set/show the use of remote protocol qTStatus packet.
set debug nios2
show debug nios2
Control display of debugging messages related to Nios II targets.
set range-stepping
show range-stepping
Control whether target-assisted range stepping is enabled.
set startup-with-shell
show startup-with-shell
Specifies whether Unix child processes are started via a shell or
set code-cache
show code-cache
Use the target memory cache for accesses to the code segment. This
improves performance of remote debugging (particularly disassembly).
* You can now use a literal value 'unlimited' for options that
interpret 0 or -1 as meaning "unlimited". E.g., "set
trace-buffer-size unlimited" is now an alias for "set
trace-buffer-size -1" and "set height unlimited" is now an alias for
"set height 0".
* The "set debug symtab-create" debugging option of GDB has been changed to
accept a verbosity level. 0 means "off", 1 provides basic debugging
output, and values of 2 or greater provides more verbose output.
* New command-line options
Display the details of GDB configure-time options.
* The command 'tsave' can now support new option '-ctf' to save trace
buffer in Common Trace Format.
* Newly installed $prefix/bin/gcore acts as a shell interface for the
GDB command gcore.
* GDB now implements the the C++ 'typeid' operator.
* The new convenience variable $_exception holds the exception being
thrown or caught at an exception-related catchpoint.
* The exception-related catchpoints, like "catch throw", now accept a
regular expression which can be used to filter exceptions by type.
* The new convenience variable $_exitsignal is automatically set to
the terminating signal number when the program being debugged dies
due to an uncaught signal.
* MI changes
** All MI commands now accept an optional "--language" option.
Support for this feature can be verified by using the "-list-features"
command, which should contain "language-option".
** The new command -info-gdb-mi-command allows the user to determine
whether a GDB/MI command is supported or not.
** The "^error" result record returned when trying to execute an undefined
GDB/MI command now provides a variable named "code" whose content is the
"undefined-command" error code. Support for this feature can be verified
by using the "-list-features" command, which should contain
** The -trace-save MI command can optionally save trace buffer in Common
Trace Format now.
** The new command -dprintf-insert sets a dynamic printf breakpoint.
** The command -data-list-register-values now accepts an optional
"--skip-unavailable" option. When used, only the available registers
are displayed.
** The new command -trace-frame-collected dumps collected variables,
computed expressions, tvars, memory and registers in a traceframe.
** The commands -stack-list-locals, -stack-list-arguments and
-stack-list-variables now accept an option "--skip-unavailable".
When used, only the available locals or arguments are displayed.
** The -exec-run command now accepts an optional "--start" option.
When used, the command follows the same semantics as the "start"
command, stopping the program's execution at the start of its
main subprogram. Support for this feature can be verified using
the "-list-features" command, which should contain
** The new commands -catch-assert and -catch-exceptions insert
catchpoints stopping the program when Ada exceptions are raised.
** The new command -info-ada-exceptions provides the equivalent of
the new "info exceptions" command.
* New system-wide configuration scripts
A GDB installation now provides scripts suitable for use as system-wide
configuration scripts for the following systems:
** ElinOS
** Wind River Linux
* GDB now supports target-assigned range stepping with remote targets.
This improves the performance of stepping source lines by reducing
the number of control packets from/to GDB. See "New remote packets"
* GDB now understands the element 'tvar' in the XML traceframe info.
It has the id of the collected trace state variables.
* On S/390 targets that provide the transactional-execution feature,
the program interruption transaction diagnostic block (TDB) is now
represented as a number of additional "registers" in GDB.
* New remote packets
The vCont packet supports a new 'r' action, that tells the remote
stub to step through an address range itself, without GDB
involvemement at each single-step.
qXfer:libraries-svr4:read's annex
The previously unused annex of the qXfer:libraries-svr4:read packet
is now used to support passing an argument list. The remote stub
reports support for this argument list to GDB's qSupported query.
The defined arguments are "start" and "prev", used to reduce work
necessary for library list updating, resulting in significant
* New features in the GDB remote stub, GDBserver
** GDBserver now supports target-assisted range stepping. Currently
enabled on x86/x86_64 GNU/Linux targets.
** GDBserver now adds element 'tvar' in the XML in the reply to
'qXfer:traceframe-info:read'. It has the id of the collected
trace state variables.
** GDBserver now supports hardware watchpoints on the MIPS GNU/Linux
* New 'z' formatter for printing and examining memory, this displays the
value as hexadecimal zero padded on the left to the size of the type.
* GDB can now use Windows x64 unwinding data.
* The "set remotebaud" command has been replaced by "set serial baud".
Similarly, "show remotebaud" has been replaced by "show serial baud".
The "set remotebaud" and "show remotebaud" commands are still available
to provide backward compatibility with older versions of GDB.
*** Changes in GDB 7.6
* Target record has been renamed to record-full.
Record/replay is now enabled with the "record full" command.
This also affects settings that are associated with full record/replay
that have been moved from "set/show record" to "set/show record full":
set|show record full insn-number-max
set|show record full stop-at-limit
set|show record full memory-query
* A new record target "record-btrace" has been added. The new target
uses hardware support to record the control-flow of a process. It
does not support replaying the execution, but it implements the
below new commands for investigating the recorded execution log.
This new recording method can be enabled using:
record btrace
The "record-btrace" target is only available on Intel Atom processors
and requires a Linux kernel 2.6.32 or later.
* Two new commands have been added for record/replay to give information
about the recorded execution without having to replay the execution.
The commands are only supported by "record btrace".
record instruction-history prints the execution history at
instruction granularity
record function-call-history prints the execution history at
function granularity
* New native configurations
ARM AArch64 GNU/Linux aarch64*-*-linux-gnu
FreeBSD/powerpc powerpc*-*-freebsd
x86_64/Cygwin x86_64-*-cygwin*
Tilera TILE-Gx GNU/Linux tilegx*-*-linux-gnu
* New targets
ARM AArch64 aarch64*-*-elf
ARM AArch64 GNU/Linux aarch64*-*-linux
Lynx 178 PowerPC powerpc-*-lynx*178
x86_64/Cygwin x86_64-*-cygwin*
Tilera TILE-Gx GNU/Linux tilegx*-*-linux
* If the configured location of system.gdbinit file (as given by the
--with-system-gdbinit option at configure time) is in the
data-directory (as specified by --with-gdb-datadir at configure
time) or in one of its subdirectories, then GDB will look for the
system-wide init file in the directory specified by the
--data-directory command-line option.
* New command line options:
-nh Disables auto-loading of ~/.gdbinit, but still executes all the
other initialization files, unlike -nx which disables all of them.
* Removed command line options
-epoch This was used by the gdb mode in Epoch, an ancient fork of
* The 'ptype' and 'whatis' commands now accept an argument to control
type formatting.
* 'info proc' now works on some core files.
* Python scripting
** Vectors can be created with gdb.Type.vector.
** Python's atexit.register now works in GDB.
** Types can be pretty-printed via a Python API.
** Python 3 is now supported (in addition to Python 2.4 or later)
** New class gdb.Architecture exposes GDB's internal representation
of architecture in the Python API.
** New method Frame.architecture returns the gdb.Architecture object
corresponding to the frame's architecture.
* New Python-based convenience functions:
** $_memeq(buf1, buf2, length)
** $_streq(str1, str2)
** $_strlen(str)
** $_regex(str, regex)
* The 'cd' command now defaults to using '~' (the home directory) if not
given an argument.
* The C++ ABI now defaults to the GNU v3 ABI. This has been the
default for GCC since November 2000.
* The command 'forward-search' can now be abbreviated as 'fo'.
* The command 'info tracepoints' can now display 'installed on target'
or 'not installed on target' for each non-pending location of tracepoint.
* New configure options
By default, development versions are built with -lmcheck on hosts
that support it, in order to help track memory corruption issues.
Release versions, on the other hand, are built without -lmcheck
by default. The --enable-libmcheck/--disable-libmcheck configure
options allow the user to override that default.
This configure option allows the user to build GDB with
libbabeltrace using which GDB can read Common Trace Format data.
* New commands (for set/show, see "New options" below)
catch signal
Catch signals. This is similar to "handle", but allows commands and
conditions to be attached.
maint info bfds
List the BFDs known to GDB.
python-interactive [command]
pi [command]
Start a Python interactive prompt, or evaluate the optional command
and print the result of expressions.
py [command]
"py" is a new alias for "python".
enable type-printer [name]...
disable type-printer [name]...
Enable or disable type printers.
* Removed commands
** For the Renesas Super-H architecture, the "regs" command has been removed
(has been deprecated in GDB 7.5), and "info all-registers" should be used
* New options
set print type methods (on|off)
show print type methods
Control whether method declarations are displayed by "ptype".
The default is to show them.
set print type typedefs (on|off)
show print type typedefs
Control whether typedef definitions are displayed by "ptype".
The default is to show them.
set filename-display basename|relative|absolute
show filename-display
Control the way in which filenames is displayed.
The default is "relative", which preserves previous behavior.
set trace-buffer-size
show trace-buffer-size
Request target to change the size of trace buffer.
set remote trace-buffer-size-packet auto|on|off
show remote trace-buffer-size-packet
Control the use of the remote protocol `QTBuffer:size' packet.
set debug aarch64
show debug aarch64
Control display of debugging messages related to ARM AArch64.
The default is off.
set debug coff-pe-read
show debug coff-pe-read
Control display of debugging messages related to reading of COFF/PE
exported symbols.
set debug mach-o
show debug mach-o
Control display of debugging messages related to Mach-O symbols
set debug notification
show debug notification
Control display of debugging info for async remote notification.
* MI changes
** Command parameter changes are now notified using new async record
** Trace frame changes caused by command "tfind" are now notified using
new async record "=traceframe-changed".
** The creation, deletion and modification of trace state variables
are now notified using new async records "=tsv-created",
"=tsv-deleted" and "=tsv-modified".
** The start and stop of process record are now notified using new
async record "=record-started" and "=record-stopped".
** Memory changes are now notified using new async record
** The data-disassemble command response will include a "fullname" field
containing the absolute file name when source has been requested.
** New optional parameter COUNT added to the "-data-write-memory-bytes"
command, to allow pattern filling of memory areas.
** New commands "-catch-load"/"-catch-unload" added for intercepting
library load/unload events.
** The response to breakpoint commands and breakpoint async records
includes an "installed" field containing a boolean state about each
non-pending tracepoint location is whether installed on target or not.
** Output of the "-trace-status" command includes a "trace-file" field
containing the name of the trace file being examined. This field is
optional, and only present when examining a trace file.
** The "fullname" field is now always present along with the "file" field,
even if the file cannot be found by GDB.
* GDB now supports the "mini debuginfo" section, .gnu_debugdata.
You must have the LZMA library available when configuring GDB for this
feature to be enabled. For more information, see:
* New remote packets
Set the size of trace buffer. The remote stub reports support for this
packet to gdb's qSupported query.
Enable Branch Trace Store (BTS)-based branch tracing for the current
thread. The remote stub reports support for this packet to gdb's
qSupported query.
Disable branch tracing for the current thread. The remote stub reports
support for this packet to gdb's qSupported query.
Read the traced branches for the current thread. The remote stub
reports support for this packet to gdb's qSupported query.
*** Changes in GDB 7.5
* GDB now supports x32 ABI. Visit <>
for more x32 ABI info.
* GDB now supports access to MIPS DSP registers on Linux targets.
* GDB now supports debugging microMIPS binaries.
* The "info os" command on GNU/Linux can now display information on
several new classes of objects managed by the operating system:
"info os procgroups" lists process groups
"info os files" lists file descriptors
"info os sockets" lists internet-domain sockets
"info os shm" lists shared-memory regions
"info os semaphores" lists semaphores
"info os msg" lists message queues
"info os modules" lists loaded kernel modules
* GDB now has support for SDT (Static Defined Tracing) probes. Currently,
the only implemented backend is for SystemTap probes (<sys/sdt.h>). You
can set a breakpoint using the new "-probe, "-pstap" or "-probe-stap"
options and inspect the probe arguments using the new $_probe_arg family
of convenience variables. You can obtain more information about SystemTap
in <>.
* GDB now supports reversible debugging on ARM, it allows you to
debug basic ARM and THUMB instructions, and provides
record/replay support.
* The option "symbol-reloading" has been deleted as it is no longer used.
* Python scripting
** GDB commands implemented in Python can now be put in command class
** The "maint set python print-stack on|off" is now deleted.
** A new class, gdb.printing.FlagEnumerationPrinter, can be used to
apply "flag enum"-style pretty-printing to any enum.
** gdb.lookup_symbol can now work when there is no current frame.
** gdb.Symbol now has a 'line' attribute, holding the line number in
the source at which the symbol was defined.
** gdb.Symbol now has the new attribute 'needs_frame' and the new
method 'value'. The former indicates whether the symbol needs a
frame in order to compute its value, and the latter computes the
symbol's value.
** A new method 'referenced_value' on gdb.Value objects which can
dereference pointer as well as C++ reference values.
** New methods 'global_block' and 'static_block' on gdb.Symtab objects
which return the global and static blocks (as gdb.Block objects),
of the underlying symbol table, respectively.
** New function gdb.find_pc_line which returns the gdb.Symtab_and_line
object associated with a PC value.
** gdb.Symtab_and_line has new attribute 'last' which holds the end
of the address range occupied by code for the current source line.
* Go language support.
GDB now supports debugging programs written in the Go programming
* GDBserver now supports stdio connections.
E.g. (gdb) target remote | ssh myhost gdbserver - hello
* The binary "gdbtui" can no longer be built or installed.
Use "gdb -tui" instead.
* GDB will now print "flag" enums specially. A flag enum is one where
all the enumerator values have no bits in common when pairwise
"and"ed. When printing a value whose type is a flag enum, GDB will
show all the constants, e.g., for enum E { ONE = 1, TWO = 2}:
(gdb) print (enum E) 3
$1 = (ONE | TWO)
* The filename part of a linespec will now match trailing components
of a source file name. For example, "break gcc/expr.c:1000" will
now set a breakpoint in build/gcc/expr.c, but not
* The "info proc" and "generate-core-file" commands will now also
work on remote targets connected to GDBserver on Linux.
* The command "info catch" has been removed. It has been disabled
since December 2007.
* The "catch exception" and "catch assert" commands now accept
a condition at the end of the command, much like the "break"
command does. For instance:
(gdb) catch exception Constraint_Error if Barrier = True
Previously, it was possible to add a condition to such catchpoints,
but it had to be done as a second step, after the catchpoint had been
created, using the "condition" command.
* The "info static-tracepoint-marker" command will now also work on
native Linux targets with in-process agent.
* GDB can now set breakpoints on inlined functions.
* The .gdb_index section has been updated to include symbols for
inlined functions. GDB will ignore older .gdb_index sections by
default, which could cause symbol files to be loaded more slowly
until their .gdb_index sections can be recreated. The new command
"set use-deprecated-index-sections on" will cause GDB to use any older
.gdb_index sections it finds. This will restore performance, but the
ability to set breakpoints on inlined functions will be lost in symbol
files with older .gdb_index sections.
The .gdb_index section has also been updated to record more information
about each symbol. This speeds up the "info variables", "info functions"
and "info types" commands when used with programs having the .gdb_index
section, as well as speeding up debugging with shared libraries using
the .gdb_index section.
* Ada support for GDB/MI Variable Objects has been added.
* GDB can now support 'breakpoint always-inserted mode' in 'record'
* MI changes
** New command -info-os is the MI equivalent of "info os".
** Output logs ("set logging" and related) now include MI output.
* New commands
** "set use-deprecated-index-sections on|off"
"show use-deprecated-index-sections on|off"
Controls the use of deprecated .gdb_index sections.
** "catch load" and "catch unload" can be used to stop when a shared
library is loaded or unloaded, respectively.
** "enable count" can be used to auto-disable a breakpoint after
several hits.
** "info vtbl" can be used to show the virtual method tables for
C++ and Java objects.
** "explore" and its sub commands "explore value" and "explore type"
can be used to recursively explore values and types of
expressions. These commands are available only if GDB is
configured with '--with-python'.
** "info auto-load" shows status of all kinds of auto-loaded files,
"info auto-load gdb-scripts" shows status of auto-loading GDB canned
sequences of commands files, "info auto-load python-scripts"
shows status of auto-loading Python script files,
"info auto-load local-gdbinit" shows status of loading init file
(.gdbinit) from current directory and "info auto-load libthread-db" shows
status of inferior specific thread debugging shared library loading.
** "info auto-load-scripts", "set auto-load-scripts on|off"
and "show auto-load-scripts" commands have been deprecated, use their
"info auto-load python-scripts", "set auto-load python-scripts on|off"
and "show auto-load python-scripts" counterparts instead.
** "dprintf location,format,args..." creates a dynamic printf, which
is basically a breakpoint that does a printf and immediately
resumes your program's execution, so it is like a printf that you
can insert dynamically at runtime instead of at compiletime.
** "set print symbol"
"show print symbol"
Controls whether GDB attempts to display the symbol, if any,
corresponding to addresses it prints. This defaults to "on", but
you can set it to "off" to restore GDB's previous behavior.
* Deprecated commands
** For the Renesas Super-H architecture, the "regs" command has been
deprecated, and "info all-registers" should be used instead.
* New targets
Renesas RL78 rl78-*-elf
HP OpenVMS ia64 ia64-hp-openvms*
* GDBserver supports evaluation of breakpoint conditions. When
support is advertised by GDBserver, GDB may be told to send the
breakpoint conditions in bytecode form to GDBserver. GDBserver
will only report the breakpoint trigger to GDB when its condition
evaluates to true.
* New options
set mips compression
show mips compression
Select the compressed ISA encoding used in functions that have no symbol
information available. The encoding can be set to either of:
and is updated automatically from ELF file flags if available.
set breakpoint condition-evaluation
show breakpoint condition-evaluation
Control whether breakpoint conditions are evaluated by GDB ("host") or by
GDBserver ("target"). Default option "auto" chooses the most efficient
available mode.
This option can improve debugger efficiency depending on the speed of the
set auto-load off
Disable auto-loading globally.
show auto-load
Show auto-loading setting of all kinds of auto-loaded files.
set auto-load gdb-scripts on|off
show auto-load gdb-scripts
Control auto-loading of GDB canned sequences of commands files.
set auto-load python-scripts on|off
show auto-load python-scripts
Control auto-loading of Python script files.
set auto-load local-gdbinit on|off
show auto-load local-gdbinit
Control loading of init file (.gdbinit) from current directory.
set auto-load libthread-db on|off
show auto-load libthread-db
Control auto-loading of inferior specific thread debugging shared library.
set auto-load scripts-directory <dir1>[:<dir2>...]
show auto-load scripts-directory
Set a list of directories from which to load auto-loaded scripts.
Automatically loaded Python scripts and GDB scripts are located in one
of the directories listed by this option.
The delimiter (':' above) may differ according to the host platform.
set auto-load safe-path <dir1>[:<dir2>...]
show auto-load safe-path
Set a list of directories from which it is safe to auto-load files.
The delimiter (':' above) may differ according to the host platform.
set debug auto-load on|off
show debug auto-load
Control display of debugging info for auto-loading the files above.
set dprintf-style gdb|call|agent
show dprintf-style
Control the way in which a dynamic printf is performed; "gdb"
requests a GDB printf command, while "call" causes dprintf to call a
function in the inferior. "agent" requests that the target agent
(such as GDBserver) do the printing.
set dprintf-function <expr>
show dprintf-function
set dprintf-channel <expr>
show dprintf-channel
Set the function and optional first argument to the call when using
the "call" style of dynamic printf.
set disconnected-dprintf on|off
show disconnected-dprintf
Control whether agent-style dynamic printfs continue to be in effect
after GDB disconnects.
* New configure options
Configure default value for the 'set auto-load scripts-directory'
setting above. It defaults to '$debugdir:$datadir/auto-load',
$debugdir representing global debugging info directories (available
via 'show debug-file-directory') and $datadir representing GDB's data
directory (available via 'show data-directory').
Configure default value for the 'set auto-load safe-path' setting
above. It defaults to the --with-auto-load-dir setting.
Set 'set auto-load safe-path' to '/', effectively disabling this
security feature.
* New remote packets
z0/z1 conditional breakpoints extension
The z0/z1 breakpoint insertion packets have been extended to carry
a list of conditional expressions over to the remote stub depending on the
condition evaluation mode. The use of this extension can be controlled
via the "set remote conditional-breakpoints-packet" command.
Specify the signals which the remote stub may pass to the debugged
program without GDB involvement.
* New command line options
--init-command=FILE, -ix Like --command, -x but execute it
before loading inferior.
--init-eval-command=COMMAND, -iex Like --eval-command=COMMAND, -ex but
execute it before loading inferior.
*** Changes in GDB 7.4
* GDB now handles ambiguous linespecs more consistently; the existing
FILE:LINE support has been expanded to other types of linespecs. A
breakpoint will now be set on all matching locations in all
inferiors, and locations will be added or removed according to
inferior changes.
* GDB now allows you to skip uninteresting functions and files when
stepping with the "skip function" and "skip file" commands.
* GDB has two new commands: "set remote hardware-watchpoint-length-limit"
and "show remote hardware-watchpoint-length-limit". These allows to
set or show the maximum length limit (in bytes) of a remote
target hardware watchpoint.
This allows e.g. to use "unlimited" hardware watchpoints with the
gdbserver integrated in Valgrind version >= 3.7.0. Such Valgrind
watchpoints are slower than real hardware watchpoints but are
significantly faster than gdb software watchpoints.
* Python scripting
** The register_pretty_printer function in module gdb.printing now takes
an optional `replace' argument. If True, the new printer replaces any
existing one.
** The "maint set python print-stack on|off" command has been
deprecated and will be deleted in GDB 7.5.
A new command: "set python print-stack none|full|message" has
replaced it. Additionally, the default for "print-stack" is
now "message", which just prints the error message without
the stack trace.
** A prompt substitution hook (prompt_hook) is now available to the
Python API.
** A new Python module, gdb.prompt has been added to the GDB Python
modules library. This module provides functionality for
escape sequences in prompts (used by set/show
extended-prompt). These escape sequences are replaced by their
corresponding value.
** Python commands and convenience-functions located in
'data-directory'/python/gdb/command and
'data-directory'/python/gdb/function are now automatically loaded
on GDB start-up.
** Blocks now provide four new attributes. global_block and
static_block will return the global and static blocks
respectively. is_static and is_global are boolean attributes
that indicate if the block is one of those two types.
** Symbols now provide the "type" attribute, the type of the symbol.
** The "gdb.breakpoint" function has been deprecated in favor of
** A new class "gdb.FinishBreakpoint" is provided to catch the return
of a function. This class is based on the "finish" command
available in the CLI.
** Type objects for struct and union types now allow access to
the fields using standard Python dictionary (mapping) methods.
For example, "some_type['myfield']" now works, as does
** A new event "gdb.new_objfile" has been added, triggered by loading a
new object file.
** A new function, "deep_items" has been added to the gdb.types
module in the GDB Python modules library. This function returns
an iterator over the fields of a struct or union type. Unlike
the standard Python "iteritems" method, it will recursively traverse
any anonymous fields.
* MI changes
** "*stopped" events can report several new "reason"s, such as
** Breakpoint changes are now notified using new async records, like
** New command -ada-task-info.
* libthread-db-search-path now supports two special values: $sdir and $pdir.
$sdir specifies the default system locations of shared libraries.
$pdir specifies the directory where the libpthread used by the application
GDB no longer looks in $sdir and $pdir after it has searched the directories
mentioned in libthread-db-search-path. If you want to search those
directories, they must be specified in libthread-db-search-path.
The default value of libthread-db-search-path on GNU/Linux and Solaris
systems is now "$sdir:$pdir".
$pdir is not supported by gdbserver, it is currently ignored.
$sdir is supported by gdbserver.
* New configure option --with-iconv-bin.
When using the internationalization support like the one in the GNU C
library, GDB will invoke the "iconv" program to get a list of supported
character sets. If this program lives in a non-standard location, one can
use this option to specify where to find it.
* When natively debugging programs on PowerPC BookE processors running
a Linux kernel version 2.6.34 or later, GDB supports masked hardware
watchpoints, which specify a mask in addition to an address to watch.
The mask specifies that some bits of an address (the bits which are
reset in the mask) should be ignored when matching the address accessed
by the inferior against the watchpoint address. See the "PowerPC Embedded"
section in the user manual for more details.
* The new option --once causes GDBserver to stop listening for connections once
the first connection is made. The listening port used by GDBserver will
become available after that.
* New commands "info macros" and "alias" have been added.
* New function parameters suffix @entry specifies value of function parameter
at the time the function got called. Entry values are available only since
gcc version 4.7.
* New commands
"!" is now an alias of the "shell" command.
Note that no space is needed between "!" and SHELL COMMAND.
* Changed commands
The watch command now supports the mask argument which allows creation
of masked watchpoints, if the current architecture supports this feature.
info auto-load-scripts [REGEXP]
This command was formerly named "maintenance print section-scripts".
It is now generally useful and is no longer a maintenance-only command.
info macro [-all] [--] MACRO
The info macro command has new options `-all' and `--'. The first for
printing all definitions of a macro. The second for explicitly specifying
the end of arguments and the beginning of the macro name in case the macro
name starts with a hyphen.
collect[/s] EXPRESSIONS
The tracepoint collect command now takes an optional modifier "/s"
that directs it to dereference pointer-to-character types and
collect the bytes of memory up to a zero byte. The behavior is
similar to what you see when you use the regular print command on a
string. An optional integer following the "/s" sets a bound on the
number of bytes that will be collected.
tstart [NOTES]
The trace start command now interprets any supplied arguments as a
note to be recorded with the trace run, with an effect similar to
setting the variable trace-notes.
tstop [NOTES]
The trace stop command now interprets any arguments as a note to be
mentioned along with the tstatus report that the trace was stopped
with a command. The effect is similar to setting the variable
* Tracepoints can now be enabled and disabled at any time after a trace
experiment has been started using the standard "enable" and "disable"
commands. It is now possible to start a trace experiment with no enabled
tracepoints; GDB will display a warning, but will allow the experiment to
begin, assuming that tracepoints will be enabled as needed while the trace
is running.
* Fast tracepoints on 32-bit x86-architectures can now be placed at
locations with 4-byte instructions, when they were previously
limited to locations with instructions of 5 bytes or longer.
* New options
set debug dwarf2-read
show debug dwarf2-read
Turns on or off display of debugging messages related to reading
DWARF debug info. The default is off.
set debug symtab-create
show debug symtab-create
Turns on or off display of debugging messages related to symbol table
creation. The default is off.
set extended-prompt
show extended-prompt
Set the GDB prompt, and allow escape sequences to be inserted to
display miscellaneous information (see 'help set extended-prompt'
for the list of sequences). This prompt (and any information
accessed through the escape sequences) is updated every time the
prompt is displayed.
set print entry-values (both|compact|default|if-needed|no|only|preferred)
show print entry-values
Set printing of frame argument values at function entry. In some cases
GDB can determine the value of function argument which was passed by the
function caller, even if the value was modified inside the called function.
set debug entry-values
show debug entry-values
Control display of debugging info for determining frame argument values at
function entry and virtual tail call frames.
set basenames-may-differ
show basenames-may-differ
Set whether a source file may have multiple base names.
(A "base name" is the name of a file with the directory part removed.
Example: The base name of "/home/user/hello.c" is "hello.c".)
If set, GDB will canonicalize file names (e.g., expand symlinks)
before comparing them. Canonicalization is an expensive operation,
but it allows the same file be known by more than one base name.
If not set (the default), all source files are assumed to have just
one base name, and gdb will do file name comparisons more efficiently.
set trace-user
show trace-user
set trace-notes
show trace-notes
Set a user name and notes for the current and any future trace runs.
This is useful for long-running and/or disconnected traces, to
inform others (or yourself) as to who is running the trace, supply
contact information, or otherwise explain what is going on.
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
Dynamically enable a tracepoint in a started trace experiment.
Dynamically disable a tracepoint in a started trace experiment.
Set the user and notes of the trace run.
Query the current status of a tracepoint.
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.
* New targets
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.
*** Changes in GDB 7.3
* GDB has a new command: "thread find [REGEXP]".
It finds the thread id whose name, target id, or thread extra info
matches the given regular expression.
* The "catch syscall" command now works on mips*-linux* targets.
* The -data-disassemble MI command now supports modes 2 and 3 for
dumping the instruction opcodes.
* New command line options
-data-directory DIR Specify DIR as the "data-directory".
This is mostly for testing purposes.
* The "maint set python auto-load on|off" command has been renamed to
"set auto-load-scripts on|off".
* GDB has a new command: "set directories".
It is like the "dir" command except that it replaces the
source path list instead of augmenting it.
* GDB now understands thread names.
On GNU/Linux, "info threads" will display the thread name as set by
prctl or pthread_setname_np.
There is also a new command, "thread name", which can be used to
assign a name internally for GDB to display.
* OpenCL C
Initial support for the OpenCL C language (
has been integrated into GDB.
* Python scripting
** The function gdb.Write now accepts an optional keyword 'stream'.
This keyword, when provided, will direct the output to either
stdout, stderr, or GDB's logging output.
** Parameters can now be be sub-classed in Python, and in particular
you may implement the get_set_doc and get_show_doc functions.
This improves how Parameter set/show documentation is processed
and allows for more dynamic content.
** Symbols, Symbol Table, Symbol Table and Line, Object Files,
Inferior, Inferior Thread, Blocks, and Block Iterator APIs now
have an is_valid method.
** Breakpoints can now be sub-classed in Python, and in particular
you may implement a 'stop' function that is executed each time
the inferior reaches that breakpoint.
** New function gdb.lookup_global_symbol looks up a global symbol.
** GDB values in Python are now callable if the value represents a
function. For example, if 'some_value' represents a function that
takes two integer parameters and returns a value, you can call
that function like so:
result = some_value (10,20)
** Module gdb.types has been added.
It contains a collection of utilities for working with gdb.Types objects:
get_basic_type, has_field, make_enum_dict.
** Module gdb.printing has been added.
It contains utilities for writing and registering pretty-printers.
New classes: PrettyPrinter, SubPrettyPrinter,
New function: register_pretty_printer.
** New commands "info pretty-printers", "enable pretty-printer" and
"disable pretty-printer" have been added.
** gdb.parameter("directories") is now available.
** New function gdb.newest_frame returns the newest frame in the
selected thread.
** The gdb.InferiorThread class has a new "name" attribute. This
holds the thread's name.
** Python Support for Inferior events.
Python scripts can add observers to be notified of events
occurring in the process being debugged.
The following events are currently supported:
- Continue event.
- Inferior exited event.
- Signal received, and Breakpoint hit events.
* C++ Improvements:
** GDB now puts template parameters in scope when debugging in an
instantiation. For example, if you have:
template<int X> int func (void) { return X; }
then if you step into func<5>, "print X" will show "5". This
feature requires proper debuginfo support from the compiler; it
was added to GCC 4.5.
** The motion commands "next", "finish", "until", and "advance" now
work better when exceptions are thrown. In particular, GDB will
no longer lose control of the inferior; instead, the GDB will
stop the inferior at the point at which the exception is caught.
This functionality requires a change in the exception handling
code that was introduced in GCC 4.5.
* GDB now follows GCC's rules on accessing volatile objects when
reading or writing target state during expression evaluation.
One notable difference to prior behavior is that "print x = 0"
no longer generates a read of x; the value of the assignment is
now always taken directly from the value being assigned.
* GDB now has some support for using labels in the program's source in
linespecs. For instance, you can use "advance label" to continue
execution to a label.
* GDB now has support for reading and writing a new .gdb_index
section. This section holds a fast index of DWARF debugging
information and can be used to greatly speed up GDB startup and
operation. See the documentation for `save gdb-index' for details.
* The "watch" command now accepts an optional "-location" argument.
When used, this causes GDB to watch the memory referred to by the
expression. Such a watchpoint is never deleted due to it going out
of scope.
* GDB now supports thread debugging of core dumps on GNU/Linux.
GDB now activates thread debugging using the libthread_db library
when debugging GNU/Linux core dumps, similarly to when debugging
live processes. As a result, when debugging a core dump file, GDB
is now able to display pthread_t ids of threads. For example, "info
threads" shows the same output as when debugging the process when it
was live. In earlier releases, you'd see something like this:
(gdb) info threads
* 1 LWP 6780 main () at main.c:10
While now you see this:
(gdb) info threads
* 1 Thread 0x7f0f5712a700 (LWP 6780) main () at main.c:10
It is also now possible to inspect TLS variables when debugging core
When debugging a core dump generated on a machine other than the one
used to run GDB, you may need to point GDB at the correct
libthread_db library with the "set libthread-db-search-path"
command. See the user manual for more details on this command.
* When natively debugging programs on PowerPC BookE processors running
a Linux kernel version 2.6.34 or later, GDB supports ranged breakpoints,
which stop execution of the inferior whenever it executes an instruction
at any address within the specified range. See the "PowerPC Embedded"
section in the user manual for more details.
* New features in the GDB remote stub, GDBserver
** GDBserver is now supported on PowerPC LynxOS (versions 4.x and 5.x),
and i686 LynxOS (version 5.x).
** GDBserver is now supported on Blackfin Linux.
* New native configurations
ia64 HP-UX ia64-*-hpux*
* New targets:
Analog Devices, Inc. Blackfin Processor bfin-*
* Ada task switching is now supported on sparc-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.
* Guile support was removed.
* New features in the GNU simulator
** The --map-info flag lists all known core mappings.
** CFI flashes may be simulated via the "cfi" device.
*** Changes in GDB 7.2
* Shared library support for remote targets by default
When GDB is configured for a generic, non-OS specific target, like
for example, --target=arm-eabi or one of the many *-*-elf targets,
GDB now queries remote stubs for loaded shared libraries using the
`qXfer:libraries:read' packet. Previously, shared library support
was always disabled for such configurations.
* C++ Improvements:
** Argument Dependent Lookup (ADL)
In C++ ADL lookup directs function search to the namespaces of its
arguments even if the namespace has not been imported.
For example:
namespace A
class B { };
void foo (B) { }
A::B b
Here the compiler will search for `foo' in the namespace of 'b'
and find A::foo. GDB now supports this. This construct is commonly
used in the Standard Template Library for operators.
** Improved User Defined Operator Support
In addition to member operators, GDB now supports lookup of operators
defined in a namespace and imported with a `using' directive, operators
defined in the global scope, operators imported implicitly from an
anonymous namespace, and the ADL operators mentioned in the previous
GDB now also supports proper overload resolution for all the previously
mentioned flavors of operators.
** static const class members
Printing of static const class members that are initialized in the
class definition has been fixed.
* 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.
* Static tracepoints
Static tracepoints are calls in the user program into a tracing
library. One such library is a port of the LTTng kernel tracer to
userspace --- UST (LTTng Userspace Tracer,
When debugging with GDBserver, GDB now supports combining the GDB
tracepoint machinery with such libraries. For example: the user can
use GDB to probe a static tracepoint marker (a call from the user
program into the tracing library) with the new "strace" command (see
"New commands" below). This creates a "static tracepoint" in the
breakpoint list, that can be manipulated with the same feature set
as fast and regular tracepoints. E.g., collect registers, local and
global variables, collect trace state variables, and define
tracepoint conditions. In addition, the user can collect extra
static tracepoint marker specific data, by collecting the new
$_sdata internal variable. When analyzing the trace buffer, you can
inspect $_sdata like any other variable available to GDB. For more
information, see the "Tracepoints" chapter in GDB user manual. New
remote packets have been defined to support static tracepoints, see
the "New remote packets" section below.
* Better reconstruction of tracepoints after disconnected tracing
GDB will attempt to download the original source form of tracepoint
definitions when starting a trace run, and then will upload these
upon reconnection to the target, resulting in a more accurate
reconstruction of the tracepoints that are in use on the target.
* Observer mode
You can now exercise direct control over the ways that GDB can
affect your program. For instance, you can disallow the setting of
breakpoints, so that the program can run continuously (assuming
non-stop mode). In addition, the "observer" variable is available
to switch all of the different controls; in observer mode, GDB
cannot affect the target's behavior at all, which is useful for
tasks like diagnosing live systems in the field.
* The new convenience variable $_thread holds the number of the
current thread.
* New remote packets
Return the address of the Windows Thread Information Block of a given thread.
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.
List static tracepoint markers in the target program.
List static tracepoint markers at a given address in the target
Read the static trace data collected (by a `collect $_sdata'
tracepoint action). The remote stub reports support for this packet
to gdb's qSupported query.
Send the current settings of GDB's permission flags.
Send part of the source (textual) form of a tracepoint definition,
which includes location, conditional, and action list.
* 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 (including fast tracepoints, and
static tracepoints). The feature is currently supported by the
i386-linux and amd64-linux builds. See the "Tracepoints support
in gdbserver" section in the manual for more information.
GDBserver JIT compiles the tracepoint's conditional agent
expression bytecode into native code whenever possible for low
overhead dynamic tracepoints conditionals. For such tracepoints,
an expression that examines program state is evaluated when the
tracepoint is reached, in order to determine whether to capture
trace data. If the condition is simple and false, processing the
tracepoint finishes very quickly and no data is gathered.
GDBserver interfaces with the UST (LTTng Userspace Tracer) library
for static tracepoints support.
- 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
eval template, expressions...
Convert the values of one or more expressions under the control
of the string template to a command line, and call it.
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
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.
info static-tracepoint-markers
Display information about static tracepoint markers in the target.
strace FN | FILE:LINE | *ADDR | -m MARKER_ID
Define a static tracepoint by probing a marker at the given
function, line, address, or marker ID.
set observer on|off
show observer
Enable and disable observer mode.
set may-write-registers on|off
set may-write-memory on|off
set may-insert-breakpoints on|off
set may-insert-tracepoints on|off
set may-insert-fast-tracepoints on|off
set may-interrupt on|off
Set individual permissions for GDB effects on the target. Note that
some of these settings can have undesirable or surprising
consequences, particularly when changed in the middle of a session.
For instance, disabling the writing of memory can prevent
breakpoints from being inserted, cause single-stepping to fail, or
even crash your program, if you disable after breakpoints have been
inserted. However, GDB should not crash.
set record memory-query on|off
show record memory-query
Control whether to stop the inferior if memory changes caused
by an instruction cannot be recorded.
* Changed commands
The disassemble command now supports "start,+length" form of two arguments.
* Python scripting
** GDB now provides a new directory location, called the python directory,
where Python scripts written for GDB can be installed. The location
of that directory is <data-directory>/python, where <data-directory>
is the GDB data directory. For more details, see section `Scripting
GDB using Python' in the manual.
** The GDB Python API now has access to breakpoints, symbols, symbol
tables, program spaces, inferiors, threads 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.
** Pretty-printers can now be individually enabled and disabled.
** 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 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
* GDB now supports the extended ptrace interface for PowerPC which is
available since Linux kernel version 2.6.34. This automatically enables
any hardware breakpoints and additional hardware watchpoints available in
the processor. The old ptrace interface exposes just one hardware
watchpoint and no hardware breakpoints.
* GDB is now able to use the Data Value Compare (DVC) register available on
embedded PowerPC processors to implement in hardware simple watchpoint
conditions of the form:
This works in native GDB running on Linux kernels with the extended ptrace
interface mentioned above.
*** 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
** 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
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.
The source command is now capable of sourcing Python scripts.
This feature is dependent on the debugger being build with Python
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/ 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
Define a trace state variable.
Get the current value of a trace state variable.
Set desired tracing behavior upon disconnection.
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.
* The disassemble command now supports: an optional /r modifier, print the
raw instructions in hex as well as in symbolic form, and an optional /m
modifier to print mixed source+assembly.
* Process record and replay
In a architecture environment that supports ``process record and
replay'', ``process record and replay'' target can record a log of
the process execution, and replay it with both forward and reverse
execute commands.
* Reverse debugging: GDB now has new commands reverse-continue, reverse-
step, reverse-next, reverse-finish, reverse-stepi, reverse-nexti, and
set execution-direction {forward|reverse}, for targets that support
reverse execution.
* GDB now supports hardware watchpoints on MIPS/Linux systems. This
feature is available with a native GDB running on kernel version
2.6.28 or later.
* GDB now has support for multi-byte and wide character sets on the
target. Strings whose character type is wchar_t, char16_t, or
char32_t are now correctly printed. GDB supports wide- and unicode-
literals in C, that is, L'x', L"string", u'x', u"string", U'x', and
U"string" syntax. And, GDB allows the "%ls" and "%lc" formats in
`printf'. This feature requires iconv to work properly; if your
system does not have a working iconv, GDB can use GNU libiconv. See
the installation instructions for more information.
* GDB now supports automatic retrieval of shared library files from
remote targets. To use this feature, specify a system root that begins
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.
* When completing in expressions, gdb will attempt to limit
completions to allowable structure or union fields, where appropriate.
For instance, consider:
# struct example { int f1; double f2; };
# struct example variable;
(gdb) p variable.
If the user types TAB at the end of this command line, the available
completions will be "f1" and "f2".
* Inlined functions are now supported. They show up in backtraces, and
the "step", "next", and "finish" commands handle them automatically.
* GDB now supports the token-splicing (##) and stringification (#)
operators when expanding macros. It also supports variable-arity
* 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.
* 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
Search memory for a sequence of bytes.
Turn off `+'/`-' protocol acknowledgments to permit more efficient
operation over reliable transport links. Use of this packet is
controlled by the `set remote noack-packet' command.
Kill the process with the specified process ID. Use this in preference
to `k' when multiprocess protocol extensions are supported.
Obtains additional operating system information
Read or write additional signal information.
* Removed remote protocol undocumented extension
An undocumented extension to the remote protocol's `S' stop reply
packet that permited the stub to pass a process id was removed.
Remote servers should use the `T' stop reply packet instead.
* GDB now supports multiple function calling conventions according to the
DWARF-2 DW_AT_calling_convention function attribute.
* The SH target utilizes the aforementioned change to distinguish between gcc
and Renesas calling convention. It also adds the new CLI commands
`set/show sh calling-convention'.
* GDB can now read compressed debug sections, as produced by GNU gold
with the --compress-debug-sections=zlib flag.
* 64-bit core files are now supported on AIX.
* Thread switching is now supported on Tru64.
* Watchpoints can now be set on unreadable memory locations, e.g. addresses
which will be allocated using malloc later in program execution.
* The qXfer:libraries:read remote procotol packet now allows passing a
list of section offsets.
* On GNU/Linux, GDB can now attach to stopped processes. Several race
conditions handling signals delivered during attach or thread creation
have also been fixed.
* GDB now supports the use of DWARF boolean types for Ada's type Boolean.
From the user's standpoint, all unqualified instances of True and False
are treated as the standard definitions, regardless of context.
* GDB now parses C++ symbol and type names more flexibly. For
example, given:
template<typename T> class C { };
C<char const *> c;
GDB will now correctly handle all of:
ptype C<char const *>
ptype C<char const*>
ptype C<const char *>
ptype C<const char*>
* New features in the GDB remote stub, gdbserver
- The "--wrapper" command-line argument tells gdbserver to use a
wrapper program to launch programs for debugging.
- On PowerPC and S/390 targets, it is now possible to use a single
gdbserver executable to debug both 32-bit and 64-bit programs.
(This requires gdbserver itself to be built as a 64-bit executable.)
- gdbserver uses the new noack protocol mode for TCP connections to
reduce communications latency, if also supported and enabled in GDB.
- Support for the sparc64-linux-gnu target is now included in
- 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
available is determined at configure time.
New GDB commands can now be written in Python.
* Ada tasking support
Ada tasks can now be inspected in GDB. The following commands have
been introduced:
info tasks
Print the list of Ada tasks.
info task N
Print detailed information about task number N.
Print the task number of the current task.
task N
Switch the context of debugging to task number N.
* 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"
* Target descriptions can now describe the target OS ABI. See the
"Target Description Format" section in the user manual for more
* 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.
maint set python print-stack
maint show python print-stack
Show a stack trace when an error is encountered in a Python script.
python [CODE]
Invoke CODE by passing it to the Python interpreter.
macro define
macro list
macro undef
These allow macros to be defined, undefined, and listed
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 debug timestamp
show debug timestamp
Control display of timestamps with GDB debugging output.
set disassemble-next-line
show disassemble-next-line
Control display of disassembled source lines or instructions when
the debuggee stops.
set remote noack-packet
show remote noack-packet
Set/show the use of remote protocol QStartNoAckMode packet. See above
under "New remote packets."
set remote query-attached-packet
show remote query-attached-packet
Control use of remote protocol `qAttached' (query-attached) packet.
set remote read-siginfo-object
show remote read-siginfo-object
Control use of remote protocol `qXfer:siginfo:read' (read-siginfo-object)
set remote write-siginfo-object
show remote write-siginfo-object
Control use of remote protocol `qXfer:siginfo:write' (write-siginfo-object)
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
single-step over breakpoints without removing them from the debuggee.
Also known as "out-of-line single-stepping".
set debug displaced
show debug displaced
Control display of debugging info for displaced stepping.
maint set internal-error
maint show internal-error
Control what GDB does when an internal error is detected.
maint set internal-warning
maint show internal-warning
Control what GDB does when an internal warning is detected.
set exec-wrapper
show exec-wrapper
unset exec-wrapper
Use a wrapper program to launch programs for debugging.
set multiple-symbols (all|ask|cancel)
show multiple-symbols
The value of this variable can be changed to adjust the debugger behavior
when an expression or a breakpoint location contains an ambiguous symbol
name (an overloaded function name, for instance).
set breakpoint always-inserted
show breakpoint always-inserted
Keep breakpoints always inserted in the target, as opposed to inserting
them when resuming the target, and removing them when the target stops.
This option can improve debugger performance on slow remote targets.
set arm fallback-mode (arm|thumb|auto)
show arm fallback-mode
set arm force-mode (arm|thumb|auto)
show arm force-mode
These commands control how ARM GDB determines whether instructions
are ARM or Thumb. The default for both settings is auto, which uses
the current CPSR value for instructions without symbols; previous
versions of GDB behaved as if "set arm fallback-mode arm".
set disable-randomization
show disable-randomization
Standalone programs run with the virtual address space randomization enabled
by default on some platforms. This option keeps the addresses stable across
multiple debugging sessions.
set non-stop
show non-stop
Control whether other threads are stopped or not when some thread hits
a breakpoint.
set target-async
show target-async
Requests that asynchronous execution is enabled in the target, if available.
In this case, it's possible to resume target in the background, and interact
with GDB while the target is running. "show target-async" displays the
current state of asynchronous execution of the target.
set target-wide-charset
show target-wide-charset
The target-wide-charset is the name of the character set that GDB
uses when printing characters whose type is wchar_t.
set tcp auto-retry (on|off)
show tcp auto-retry
set tcp connect-timeout
show tcp connect-timeout
These commands allow GDB to retry failed TCP connections to a remote stub
with a specified timeout period; this is useful if the stub is launched
in parallel with GDB but may not be ready to accept connections immediately.
set libthread-db-search-path
show libthread-db-search-path
Control list of directories which GDB will search for appropriate
set schedule-multiple (on|off)
show schedule-multiple
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'
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*
x86_64 MinGW x86_64-*-mingw*
* New targets
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.
* Removed commands
catch load
catch unload
These commands were actually not implemented on any target.
*** Changes in GDB 6.8
* New native configurations
NetBSD/hppa hppa*-*netbsd*
Xtensa GNU/Linux xtensa*-*-linux*
* New targets
NetBSD/hppa hppa*-*-netbsd*
Xtensa GNU/Lunux xtensa*-*-linux*
* Change in command line behavior -- corefiles vs. process ids.
When the '-p NUMBER' or '--pid NUMBER' options are used, and
attaching to process NUMBER fails, GDB no longer attempts to open a
core file named NUMBER. Attaching to a program using the -c option
is no longer supported. Instead, use the '-p' or '--pid' options.
* GDB can now be built as a native debugger for debugging Windows x86
(mingw32) Portable Executable (PE) programs.
* Pending breakpoints no longer change their number when their address
is resolved.
* GDB now supports breakpoints with multiple locations,
including breakpoints on C++ constructors, inside C++ templates,
and in inlined functions.
* GDB's ability to debug optimized code has been improved. GDB more
accurately identifies function bodies and lexical blocks that occupy
more than one contiguous range of addresses.
* Target descriptions can now describe registers for PowerPC.
* The GDB remote stub, gdbserver, now supports the AltiVec and SPE
registers on PowerPC targets.
* The GDB remote stub, gdbserver, now supports thread debugging on GNU/Linux
targets even when the libthread_db library is not available.
* The GDB remote stub, gdbserver, now supports the new file transfer
commands (remote put, remote get, and remote delete).
* The GDB remote stub, gdbserver, now supports run and attach in
extended-remote mode.
* hppa*64*-*-hpux11* target broken
The debugger is unable to start a program and fails with the following
error: "Error trying to get information about dynamic linker".
The gdb-6.7 release is also affected.
* GDB now supports the --enable-targets= configure option to allow
building a single GDB executable that supports multiple remote
target architectures.
* GDB now supports debugging C and C++ programs which use the
Decimal Floating Point extension. In addition, the PowerPC target
now has a set of pseudo-registers to inspect decimal float values
stored in two consecutive float registers.
* The -break-insert MI command can optionally create pending
breakpoints now.
* Improved support for debugging Ada
Many improvements to the Ada language support have been made. These
- Better support for Ada2005 interface types
- Improved handling of arrays and slices in general
- Better support for Taft-amendment types
- The '{type} ADDRESS' expression is now allowed on the left hand-side
of an assignment
- Improved command completion in Ada
- Several bug fixes
* GDB on GNU/Linux and HP/UX can now debug through "exec" of a new
* New commands
set print frame-arguments (all|scalars|none)
show print frame-arguments
The value of this variable can be changed to control which argument
values should be printed by the debugger when displaying a frame.
remote put
remote get
remote delete
Transfer files to and from a remote target, and delete remote files.
* New MI commands
Transfer files to and from a remote target, and delete remote files.
* New remote packets
Open, close, read, write, and delete files on the remote system.
Attach to an existing process on the remote system, in extended-remote
Run a new process on the remote system, in extended-remote mode.
*** Changes in GDB 6.7
* Resolved 101 resource leaks, null pointer dereferences, etc. in gdb,
bfd, libiberty and opcodes, as revealed by static analysis donated by
Coverity, Inc. (
* When looking up multiply-defined global symbols, GDB will now prefer the
symbol definition in the current shared library if it was built using the
-Bsymbolic linker option.
* When the Text User Interface (TUI) is not configured, GDB will now
recognize the -tui command-line option and print a message that the TUI
is not supported.
* The GDB remote stub, gdbserver, now has lower overhead for high
frequency signals (e.g. SIGALRM) via the QPassSignals packet.
* GDB for MIPS targets now autodetects whether a remote target provides
32-bit or 64-bit register values.
* Support for C++ member pointers has been improved.
* GDB now understands XML target descriptions, which specify the
target's overall architecture. GDB can read a description from
a local file or over the remote serial protocol.
* Vectors of single-byte data use a new integer type which is not
automatically displayed as character or string data.
* The /s format now works with the print command. It displays
arrays of single-byte integers and pointers to single-byte integers
as strings.
* Target descriptions can now describe target-specific registers,
for architectures which have implemented the support (currently
only ARM, M68K, and MIPS).
* GDB and the GDB remote stub, gdbserver, now support the XScale
iWMMXt coprocessor.
* The GDB remote stub, gdbserver, has been updated to support
ARM Windows CE (mingw32ce) debugging, and GDB Windows CE support
has been rewritten to use the standard GDB remote protocol.
* GDB can now step into C++ functions which are called through thunks.
* GDB for the Cell/B.E. SPU now supports overlay debugging.
* The GDB remote protocol "qOffsets" packet can now honor ELF segment
layout. It also supports a TextSeg= and DataSeg= response when only
segment base addresses (rather than offsets) are available.
* The /i format now outputs any trailing branch delay slot instructions
immediately following the last instruction within the count specified.
* The GDB remote protocol "T" stop reply packet now supports a
"library" response. Combined with the new "qXfer:libraries:read"
packet, this response allows GDB to debug shared libraries on targets
where the operating system manages the list of loaded libraries (e.g.
Windows and SymbianOS).
* The GDB remote stub, gdbserver, now supports dynamic link libraries
(DLLs) on Windows and Windows CE targets.
* GDB now supports a faster verification that a .debug file matches its binary
according to its build-id signature, if the signature is present.
* New commands
set remoteflow
show remoteflow
Enable or disable hardware flow control (RTS/CTS) on the serial port
when debugging using remote targets.
set mem inaccessible-by-default
show mem inaccessible-by-default
If the target supplies a memory map, for instance via the remote
protocol's "qXfer:memory-map:read" packet, setting this variable
prevents GDB from accessing memory outside the memory map. This
is useful for targets with memory mapped registers or which react
badly to accesses of unmapped address space.
set breakpoint auto-hw
show breakpoint auto-hw
If the target supplies a memory map, for instance via the remote
protocol's "qXfer:memory-map:read" packet, setting this variable
lets GDB use hardware breakpoints automatically for memory regions
where it can not use software breakpoints. This covers both the
"break" command and internal breakpoints used for other commands
including "next" and "finish".
catch exception
catch exception unhandled
Stop the program execution when Ada exceptions are raised.
catch assert
Stop the program execution when an Ada assertion failed.
set sysroot
show sysroot
Set an alternate system root for target files. This is a more
general version of "set solib-absolute-prefix", which is now
an alias to "set sysroot".
info spu
Provide extended SPU facility status information. This set of
commands is available only when debugging the Cell/B.E. SPU
* New native configurations
OpenBSD/sh sh*-*openbsd*
set tdesc filename
unset tdesc filename
show tdesc filename
Use the specified local file as an XML target description, and do
not query the target for its built-in description.
* New targets
OpenBSD/sh sh*-*-openbsd*
MIPS64 GNU/Linux (gdbserver) mips64-linux-gnu
Toshiba Media Processor mep-elf
* New remote packets
Ignore the specified signals; pass them directly to the debugged program
without stopping other threads or reporting them to GDB.
Read an XML target description from the target, which describes its
Read or write contents of an spufs file on the target system. These
packets are available only on the Cell/B.E. SPU architecture.
Report the loaded shared libraries. Combined with new "T" packet
response, this packet allows GDB to debug shared libraries on
targets where the operating system manages the list of loaded
libraries (e.g. Windows and SymbianOS).
* Removed targets
Support for these obsolete configurations has been removed.
* Other removed features
target abug
target cpu32bug
target est
target rom68k
Various m68k-only ROM monitors.
target hms
target e7000
target sh3
target sh3e
Various Renesas ROM monitors and debugging interfaces for SH and
target ocd
Support for a Macraigor serial interface to on-chip debugging.
GDB does not directly support the newer parallel or USB
DWARF 1 support
A debug information format. The predecessor to DWARF 2 and
DWARF 3, which are still supported.
Support for the HP aCC compiler on HP-UX/PA-RISC
SOM-encapsulated symbolic debugging information, automatic
invocation of pxdb, and the aCC custom C++ ABI. This does not
affect HP-UX for Itanium or GCC for HP-UX/PA-RISC. Code compiled
with aCC can still be debugged on an assembly level.
MIPS ".pdr" sections
A MIPS-specific format used to describe stack frame layout
in debugging information.
Scheme support
GDB could work with an older version of Guile to debug
the interpreter and Scheme programs running in it.
set mips stack-arg-size
set mips saved-gpreg-size
Use "set mips abi" to control parameter passing for MIPS.
*** Changes in GDB 6.6
* New targets
Xtensa xtensa-elf
Cell Broadband Engine SPU spu-elf
* GDB can now be configured as a cross-debugger targeting native Windows
(mingw32) or Cygwin. It can communicate with a remote debugging stub
running on a Windows system over TCP/IP to debug Windows programs.
* The GDB remote stub, gdbserver, has been updated to support Windows and
Cygwin debugging. Both single-threaded and multi-threaded programs are
* The "set trust-readonly-sections" command works again. This command was
broken in GDB 6.3, 6.4, and 6.5.
* The "load" command now supports writing to flash memory, if the remote
stub provides the required support.
* Support for GNU/Linux Thread Local Storage (TLS, per-thread variables) no
longer requires symbolic debug information (e.g. DWARF-2).
* New commands
set substitute-path
unset substitute-path
show substitute-path
Manage a list of substitution rules that GDB uses to rewrite the name
of the directories where the sources are located. This can be useful
for instance when the sources were moved to a different location
between compilation and debugging.
set trace-commands
show trace-commands
Print each CLI command as it is executed. Each command is prefixed with
a number of `+' symbols representing the nesting depth.
The source command now has a `-v' option to enable the same feature.
* REMOVED features
The ARM Demon monitor support (RDP protocol, "target rdp").
Kernel Object Display, an embedded debugging feature which only worked with
an obsolete version of Cisco IOS.
The 'set download-write-size' and 'show download-write-size' commands.
* New remote packets
Tell a stub about GDB client features, and request remote target features.
The first feature implemented is PacketSize, which allows the target to
specify the size of packets it can handle - to minimize the number of
packets required and improve performance when connected to a remote
Fetch an OS auxilliary vector from the remote stub. This packet is a
more efficient replacement for qPart:auxv:read.
Fetch a memory map from the remote stub, including information about
RAM, ROM, and flash memory devices.