.RHEL 10 provides GDB version 14.2
GDB has been updated to version 14.2. The following paragraphs list notable changes since GDB 12.1.
General:
* The `info breakpoints` command now displays enabled breakpoint locations of disabled breakpoints as in the `y-` state.
* Added support for debug sections compressed with Zstandard (`ELFCOMPRESS_ZSTD`) for ELF.
* The Text User Interface (TUI) no longer styles the source and assembly code highlighted by the current position indicator by default. To re-enable styling, use the new command `set style tui-current-position`.
* A new `$_inferior_thread_count` convenience variable contains the number of live threads in the current inferior.
* For breakpoints with multiple code locations, GDB now prints the code location using the `<breakpoint_number>.<location_number>` syntax.
* When a breakpoint is hit, GDB now sets the `$_hit_bpnum` and `$_hit_locno` convenience variables to the hit breakpoint number and code location number. You can now disable the last hit breakpoint by using the `disable $_hit_bpnum` command, or disable only the specific breakpoint code location by using the `disable $_hit_bpnum.$_hit_locno` command.
* Added support for the link:
https://no-color.org/[`NO_COLOR`] environment variable.
* Added support for integer types larger than 64 bits.
* You can use new commands for multi-target feature configuration to configure remote target feature sets (see the `set remote <name>-packet` and `show remote <name>-packet` in Commands).
* Added support for the Debugger Adapter Protocol.
* You can now use the new `inferior` keyword to make breakpoints inferior-specific (see `break` or `watch` in Commands).
* You can now use the new `$_shell()` convenience function to execute a shell command
during expression evaluation.
Changes to existing commands:
* `break`, `watch`
** Using the `thread` or `task` keywords multiple times with the `break` and `watch` commands now results in an error instead of using the thread or task ID of the last instance of the keyword.
** Using more than one of the `thread`, `task`, and `inferior` keywords in the same `break` or `watch` command is now invalid.
* `printf`, `dprintf`
** The `printf` and `dprintf` commands now accept the `%V` output format, which formats an expression the same way as the `print` command. You can also modify the output format by using additional print options in brackets `[...]` following the command, for example: `printf "%V[-array-indexes on]", <array>`.
* `list`
** You can now use the `.` argument to print the location around the point of execution in the current frame, or around the beginning of the `main()` function if the inferior has not started yet.
** Attempting to list more source lines in a file than are available now issues a warning, referring the user to the `.` argument.
* `document user-defined`
** It is now possible to document user-defined aliases.
New commands:
* `set print nibbles [on|off]` (default: `off`), `show print nibbles` - controls whether the `print/t` command displays binary values in groups of four bits (nibbles).
* `set debug infcall [on|off]` (default: `off`), `show debug infcall` - prints additional debug messages about inferior function calls.
* `set debug solib [on|off]` (default: `off`), `show debug solib` - prints additional debug messages about shared library handling.
* `set print characters <LIMIT>`, `show print characters`, `print -characters <LIMIT>` - controls how many characters of a string are printed.
* `set debug breakpoint [on|off]` (default: `off`), `show debug breakpoint` - prints additional debug messages about breakpoint insertion and removal.
* `maintenance print record-instruction [ N ]` - prints the recorded information for a given instruction.
* `maintenance info frame-unwinders` - lists the frame unwinders currently in effect in the order of priority (highest first).
* `maintenance wait-for-index-cache` - waits until all pending writes to the index cache are completed.
* `info main` - prints information on the main symbol to identify an entry point into the program.
* `set tui mouse-events [on|off]` (default: `on`), `show tui mouse-events` - controls whether mouse click events
are sent to the TUI and Python extensions (when `on`), or the
terminal (when `off`).
Machine Interface (MI) changes:
* MI version 1 has been removed.
* MI now reports `no-history` when reverse execution history is exhausted.
* The `thread` and `task` breakpoint fields are no longer reported twice in the output of the `-break-insert` command.
* Thread-specific breakpoints can no longer be created on non-existent thread IDs.
* The `--simple-values` argument to the `-stack-list-arguments`, `-stack-list-locals`, `-stack-list-variables`, and `-var-list-children` commands now considers reference types as simple if the target is simple.
* The `-break-insert` command now accepts a new `-g thread-group-id` option to create
inferior-specific breakpoints.
* Breakpoint-created notifications and the output of the `-break-insert` command can now
include an optional `inferior` field for the main breakpoint and each breakpoint location.
* The async record stating the `breakpoint-hit` stopped reason now contains an optional field `locno` giving the code location number in case of a multi-location breakpoint.
Changes in the GDB Python API:
* Events
** A new `gdb.ThreadExitedEvent` event.
** A new `gdb.executable_changed` event registry, which emits the `ExecutableChangedEvent` objects that have `progspace` and `reload` attributes.
** New `gdb.events.new_progspace` and `gdb.events.free_progspace` event registries, which emit the `NewProgpspaceEvent` and `FreeProgspaceEvent` event types. Both of these event types have a single attribute `progspace` to specify the `gdb.Progspace` program space that is being added to or removed from GDB.
* The `gdb.unwinder.Unwinder` class
** The `name` attribute is now read-only.
** The name argument of the `pass:[__init__]` function must be of the `str` type, otherwise a `TypeError` is raised.
** The `enabled` attribute now accepts only the `bool` type.
* The `gdb.PendingFrame` class
** New methods: `name`, `is_valid`, `pc`, `language`, `find_sal`, `block`, and `function`, which mirror similar methods of the `gdb.Frame` class.
** The `frame-id` argument of the `create_unwind_info` function can now be either
an integer or a `gdb.Value` object for the `pc`, `sp`, and `special` attributes.
* A new `gdb.unwinder.FrameId` class, which can be passed to the `gdb.PendingFrame.create_unwind_info` function.
* The `gdb.disassembler.DisassemblerResult` class can no longer be sub-classed.
* The `gdb.disassembler` module now includes styling support.
* A new `gdb.execute_mi(COMMAND, [ARG]...)` function, which invokes a GDB/MI
command and returns result as a Python dictionary.
* A new `gdb.block_signals()` function, which returns a context manager that
blocks any signals that GDB needs to handle.
* A new `gdb.Thread` subclass of the `threading.Thread` class, which calls the `gdb.block_signals` function in its `start` method.
* The `gdb.parse_and_eval` function has a new `global_context` parameter to restrict
parsing on global symbols.
* The `gdb.Inferior` class
** A new `arguments` attribute, which holds the command-line arguments to the inferior, if known.
** A new `main_name` attribute, which holds the name of the inferior's `main` function, if known.
** New `clear_env`, `set_env`, and `unset_env` methods, which can modify the inferior's environment before it is started.
* The `gdb.Value` class
** A new `assign` method to assign a value of an object.
** A new `to_array` method to convert an array-like value to an array.
* The `gdb.Progspace` class
** A new `objfile_for_address` method, which returns the `gdb.Objfile` object that covers a given address (if exists).
** A new `symbol_file` attribute holding the `gdb.Objfile` object that corresponds to the `Progspace.filename` variable (or `None` if the filename is `None`).
** A new `executable_filename` attribute, which holds the string with a filename that is set
by the `exec-file` or `file` commands, or `None` if no executable file is set.
* The `gdb.Breakpoint` class
** A new `inferior` attribute, which contains the inferior ID (an integer) for breakpoints that are inferior-specific, or `None` if no such breakpoints are set.
* The `gdb.Type` class
** New `is_array_like` and `is_string_like` methods, which reflect whether a type might be array- or string-like regardless of the type's actual type code.
* A new `gdb.ValuePrinter` class, which can be used as the base class for the result of applying a pretty-printer.
* A newly implemented `pass:[gdb.LazyString.__str__]` method.
* The `gdb.Frame` class
** A new `static_link` method, which returns the outer frame of a nested function frame.
** A new `gdb.Frame.language` method that returns the name of the frame's language.
* The `gdb.Command` class
** GDB now reformats the doc string for the `gdb.Command` class and the `gdb.Parameter` sub-classes to remove unnecessary leading whitespace from each line before using the string as the help output.
* The `gdb.Objfile` class
** A new `is_file` attribute.
* A new `gdb.format_address(ADDRESS, PROGSPACE, ARCHITECTURE)` function, which uses the same format as when printing address, symbol, and offset information from the disassembler.
* A new `gdb.current_language` function, which returns the name of the current language.
* A new Python API for wrapping GDB's disassembler, including `gdb.disassembler.register_disassembler(DISASSEMBLER, ARCH)`, `gdb.disassembler.Disassembler`, `gdb.disassembler.DisassembleInfo`, `gdb.disassembler.builtin_disassemble(INFO, MEMORY_SOURCE)`, and `gdb.disassembler.DisassemblerResult`.
* A new `gdb.print_options` function, which returns a dictionary of the prevailing print options, in the form accepted by the `gdb.Value.format_string` function.
* The `gdb.Value.format_string` function
** `gdb.Value.format_string` now uses the format provided by the `print` command if it is called during a `print` or other similar operation.
** `gdb.Value.format_string` now accepts the `summary` keyword.
* A new `gdb.BreakpointLocation` Python type.
* The `gdb.register_window_type` method now restricts the set of acceptable window names.
Architecture-specific changes:
* AMD and Intel 64-bit architectures
** Added support for disassembler styling using the `libopcodes` library, which is now used by default. You can modify how the disassembler output is styled by using the `set style disassembler *` commands. To use the Python Pygments styling instead, use the new `maintenance set libopcodes-styling off` command.
* The 64-bit ARM architecture
** Added support for dumping memory tag data for the Memory Tagging Extension (MTE).
** Added support for the Scalable Matrix Extension 1 and 2 (SME/SME2). Some features are still considered experimental or alpha, for example, manual function calls with ZA state or tracking Scalable Vector Graphics (SVG) changes based on DWARF.
** Added support for Thread Local Storage (TLS) variables.
** Added support for hardware watchpoints.
* The 64-bit IBM Z architecture
** Record and replay support for the new `arch14` instructions on IBM Z targets, except for the specialized-function-assist instruction `NNPA`.
* IBM Power Systems, Little Endian
** Added base enablement support for POWER11.
For changes since the RHEL 9 system version of GDB 10.2, see the release notes for the link:
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html-single/9.1_release_notes/index#BZ-2077494[GCC Toolset 12 version of GDB 11.2] and the link:
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html-single/9.3_release_notes/index#BZ-2172096[GCC Toolset 13 version of GDB 12.1].