What has changed in GDB?
(Organized release by release)
-*** Changes since GDB 7.10
+*** Changes since GDB 7.12
+
+* GDB now supports access to the PKU register on GNU/Linux. The register is
+ added by the Memory Protection Keys for Userspace feature which will be
+ available in future Intel CPUs.
+
+* GDB now supports C++11 rvalue references.
+
+* Python Scripting
+
+ ** New functions to start, stop and access a running btrace recording.
+ ** Rvalue references are now supported in gdb.Type.
+
+* GDB now supports recording and replaying rdrand and rdseed Intel 64
+ instructions.
+
+* Building GDB and GDBserver now requires a C++11 compiler.
+
+ For example, GCC 4.8 or later.
+
+ It is no longer possible to build GDB or GDBserver with a C
+ compiler. The --disable-build-with-cxx configure option has been
+ removed.
+
+* Building GDB and GDBserver now requires GNU make >= 3.81.
+
+ It is no longer supported to build GDB or GDBserver with another
+ implementation of the make program or an earlier version of GNU make.
+
+* Native debugging on MS-Windows supports command-line redirection
+
+ Command-line arguments used for starting programs on MS-Windows can
+ now include redirection symbols supported by native Windows shells,
+ such as '<', '>', '>>', '2>&1', etc. This affects GDB commands such
+ as "run", "start", and "set args", as well as the corresponding MI
+ features.
+
+* Support for thread names on MS-Windows.
+
+ GDB now catches and handles the special exception that programs
+ running on MS-Windows use to assign names to threads in the
+ debugger.
+
+* Support for Java programs compiled with gcj has been removed.
+
+* User commands now accept an unlimited number of arguments.
+ Previously, only up to 10 was accepted.
+
+* The "eval" command now expands user-defined command arguments.
+
+ This makes it easier to process a variable number of arguments:
+
+ define mycommand
+ set $i = 0
+ while $i < $argc
+ eval "print $arg%d", $i
+ set $i = $i + 1
+ end
+ end
+
+* Target descriptions can now describe registers for sparc32 and sparc64.
+
+* GDB now supports DWARF version 5 (debug information format).
+ Its .debug_names index is not yet supported.
+
+* New native configurations
+
+FreeBSD/mips mips*-*-freebsd
+
+
+* New targets
+
+Synopsys ARC arc*-*-elf32
+FreeBSD/mips mips*-*-freebsd
+
+* New commands
+
+flash-erase
+ Erases all the flash memory regions reported by the target.
+
+* New MI commands
+
+-target-flash-erase
+ Erases all the flash memory regions reported by the target. This is
+ equivalent to the CLI command flash-erase.
+
+-file-list-shared-libraries
+ List the shared libraries in the program. This is
+ equivalent to the CLI command "info shared".
+
+* New commands
+
+set disassembler-options
+show disassembler-options
+ Controls the passing of target specific information to the disassembler.
+ If it is necessary to specify more than one disassembler option then
+ multiple options can be placed together into a comma separated list.
+ The default value is the empty string. Currently, the only supported
+ targets are ARM, PowerPC and S/390.
+
+maint print arc arc-instruction address
+ Print internal disassembler information about instruction at a given address.
+
+* Removed targets and native configurations
+
+Alpha running FreeBSD alpha*-*-freebsd*
+Alpha running GNU/kFreeBSD alpha*-*-kfreebsd*-gnu
+
+*** Changes in GDB 7.12
+
+* GDB and GDBserver now build with a C++ compiler by default.
+
+ The --enable-build-with-cxx configure option is now enabled by
+ default. One must now explicitly configure with
+ --disable-build-with-cxx in order to build with a C compiler. This
+ option will be removed in a future release.
+
+* GDBserver now supports recording btrace without maintaining an active
+ GDB connection.
+
+* 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.
+
+* The symbol dumping maintenance commands have new syntax.
+maint print symbols [-pc address] [--] [filename]
+maint print symbols [-objfile objfile] [-source source] [--] [filename]
+maint print psymbols [-objfile objfile] [-pc address] [--] [filename]
+maint print psymbols [-objfile objfile] [-source source] [--] [filename]
+maint print msymbols [-objfile objfile] [--] [filename]
+
+* GDB now supports multibit bitfields and enums in target register
+ descriptions.
+
+* 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 https://www.rust-lang.org/ for more information about
+ Rust.
+
+* 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
+ line.
+
+* The "catch syscall" command catches groups of related syscalls.
+
+ The "catch syscall" command now supports catching a group of related
+ syscalls using the 'group:' or 'g:' prefix.
+
+* 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.
+
+new-ui INTERP TTY
+ Start a new user interface instance running INTERP as interpreter,
+ using the TTY file for input/output.
+
+* Python Scripting
+
+ ** gdb.Breakpoint objects have a new attribute "pending", which
+ indicates whether the breakpoint is pending.
+ ** Three new breakpoint-related events have been added:
+ gdb.breakpoint_created, gdb.breakpoint_modified, and
+ gdb.breakpoint_deleted.
+
+signal-event EVENTID
+ Signal ("set") the given MS-Windows event object. This is used in
+ conjunction with the Windows JIT debugging (AeDebug) support, where
+ the OS suspends a crashing process until a debugger can attach to
+ it. Resuming the crashing process, in order to debug it, is done by
+ signalling an event.
+
+* 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:
+
+ =record-started,thread-group="i1",method="btrace",format="bts"
+
+* MI async record =thread-selected now includes the frame field. For example:
+
+ =thread-selected,id="3",frame={level="0",addr="0x00000000004007c0"}
+
+* New targets
+
+Andes NDS32 nds32*-*-elf
+
+*** Changes in GDB 7.11
* GDB now supports debugging kernel-based threads on FreeBSD.
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
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.
-QCatchSyscalls:1 [;SYSNO]...
-QCatchSyscalls:0
- Enable ("QCatchSyscalls:1") or disable ("QCatchSyscalls:0")
- catching syscalls from the inferior process.
+QCatchSyscalls
+ 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.
-QCatchSyscalls:1 in qSupported
- The qSupported packet may now include QCatchSyscalls:1 in the reply
- to indicate support for catching syscalls.
-
* Extended-remote exec events
** GDB now has support for exec events on extended-remote Linux targets.