What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 7.1
+*** Changes since GDB 7.2
+
+* 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 (http://www.khronos.org/opencl)
+ has been integrated into GDB.
+
+* Python scripting
+
+ ** 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,
+ RegexpCollectionPrettyPrinter.
+ 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:
+ - gdb.events.cont Continue event.
+ - gdb.events.exited Inferior exited event.
+ - gdb.events.stop 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
+ dumps.
+
+ 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.
+
+* 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.
+
+*** 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
+ foo(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
+ entry.
+ 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, http://lttng.org/ust).
+ 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
+
+qGetTIBAddr
+
+ Return the address of the Windows Thread Information Block of a given thread.
+
+qRelocInsn
+
+ In response to several of the tracepoint packets, the target may now
+ also respond with a number of intermediate `qRelocInsn' request
+ packets before the final result packet, to have GDB handle
+ relocating an instruction to execute at a different address. This
+ is particularly useful for stubs that support fast tracepoints. GDB
+ reports support for this feature in the qSupported packet.
+
+qTfSTM, qTsSTM
+
+ List static tracepoint markers in the target program.
+
+qTSTMat
+
+ List static tracepoint markers at a given address in the target
+ program.
+
+qXfer:statictrace:read
+
+ 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.
+
+QAllow
+
+ Send the current settings of GDB's permission flags.
+
+QTDPsrc
+
+ 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.
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
+ names.
+
+save breakpoints <filename>
+ Save all current breakpoint definitions to a file suitable for use
+ in a later debugging session. To read the saved breakpoint
+ definitions, use the `source' command.
+
+`save tracepoints' is a new alias for `save-tracepoints'. The latter
+is now deprecated.
+
+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
+
+disassemble
+ The disassemble command now supports "start,+length" form of two arguments.
+
* Python scripting
-** The GDB Python API now has access to symbols, symbol tables, and
- frame's code blocks.
+** 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 OBJFILE-gdb.py script when OBJFILE is read by the debugger.
-** New methods gdb.target_charset and gdb.target_wide_charset.
+* Tracepoint actions were unified with breakpoint commands. In particular,
+there are no longer differences in "info break" output for breakpoints and
+tracepoints and the "commands" command can be used for both tracepoints and
+regular breakpoints.
* New targets
ARM Symbian arm*-*-symbianelf*
+* D language support.
+ GDB now supports debugging programs written in the D programming
+ language.
+
+* 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:
+
+ watch ADDRESS|VARIABLE if ADDRESS|VARIABLE == CONSTANT EXPRESSION
+
+ This works in native GDB running on Linux kernels with the extended ptrace
+ interface mentioned above.
+
*** Changes in GDB 7.1
* C++ Improvements
tracing run at the moment that it was saved. To create a trace
file, use "tsave <filename>", and to use it, do "target tfile
<name>".
-
+
+ ** Circular trace buffer
+
+ You can ask the target agent to handle the trace buffer as a
+ circular buffer, discarding the oldest trace frames to make room for
+ newer ones, by setting circular-trace-buffer to on. This feature may
+ not be available for all target agents.
+
* Changed commands
disassemble
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
QTDisconnected
Set desired tracing behavior upon disconnection.
+QTBuffer:circular
+ Set the trace buffer to be linear or circular.
+
qTfP, qTsP
Get data about the tracepoints currently in use.
the target for evaluation using the same bytecode format as is used
for tracepoint actions.
-* "disassemble" command with a /r modifier, print the raw instructions
-in hex as well as in symbolic form.
+* 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
packet that permited the stub to pass a process id was removed.
Remote servers should use the `T' stop reply packet instead.
-* The "disassemble" command now supports an optional /m modifier to print mixed
-source+assembly.
-
* GDB now supports multiple function calling conventions according to the
DWARF-2 DW_AT_calling_convention function attribute.