It is with great sadness that I announce the passing of GCC Toolset (GTS) GNU Debugger (GDB), which will no longer be a part of Red Hat Enterprise Linux (RHEL).
Persiflage aside, I am not actually sad to make this announcement at all, and I suspect many readers will not be upset by this news either.
TL;DR
The last supported version of GTS GDB will be 13.1, available across the RHEL portfolio. Starting with RHEL 9.5 and RHEL 10 beta, GDB will be rebased to the most recent GDB release, bringing the newest features and compiler support to every RHEL user. GTS will still include GDB on RHEL 8 as that product enters EUS.
What is GTS?
GTS stands for GCC Toolset, an AppStream package set comprising the latest-and-greatest C/C++ toolchain components. It is how Red Hat gives customers access to a tested and trusted modern toolchain over the "standard" system toolchain. GTS is freely available to all RHEL subscribers: just dnf install
it.
GDB has been an integral part of GTS since its inception, allowing users to take advantage of newer compiler features, whether that be new standard support or new and improved debugging information output by modern GCC compilers. While GDB specifically remains largely compiler and compiler-version-agnostic, updated debugging information from newer compilers may not be properly handled by older versions of GDB.
While organizations may be understandably hesitant to recertify their software using a newer compiler, there is typically no need for this hesitancy when it comes to using a newer debugger.
This would allow users to take advantage of a myriad of new debugger features.
Why?
This may come as a surprise to many readers, but in my experience, very few of our customers even know that GCC Toolset exists. Actually, even very few Red Hat engineers know of its existence.
RHEL 9.4 ships GDB 10.2, released in February, 2021. For RHEL 9.5/10, this has been rebased to 14.2, released in February, 2024. That’s three years of bug fixes and new features. (If for some reason you are still on RHEL 8, I highly recommend you use GTS GDB—especially for C++ development. Simply dnf install gcc-toolset-13-gdb
and note that GTS 14 should be arriving soon.)
I am not going to sugarcoat this with marketing-speak. One of the compelling reasons for this decision was to lessen our maintenance burden. Releasing GDB is a very labor-intensive process, involving many man-hours of testing and test analysis. This allows us to effectively release one new version of GDB everywhere, ensuring it is of the highest quality we can possibly deliver to our customers.
However, we also believe that this is a practical boon to our customers, who can now use the same feature-rich version of GDB across all RHEL releases without the overhead of using GTS. No more scl enable gcc-toolset-13 /bin/bash
. GDB will be the same wherever you debug.
What to expect with the new GDB
The complete list of features and bug fixes added by this rebase are far too numerous to completely enumerate, but here’s a brief list of the most important user-visible changes between gdb-10.2 (RHEL 9.4) and gdb-14.2 (RHEL 9.5):
- Improved Clang compatibility.
- On-demand debuginfo support with debuginfod.
- Terminal, source, and disassembly syntax highlighting.
- Support for Debugger Adapter Protocol (DAP).
- Support for new hardware features, e.g., AArch64 SME and MTE support.
- New TUI features, e.g., Python integration and mouse actions.
- Expanded Python scripting support, new events, new data and runtime classes, disassembler interface; ability to write new GDB/MI commands in Python.
- Many new convenience variables and functions, e.g.,
$_inferior_thread_count
,$_hit_bpnum/$_hit_locno
,$_gdb.set_parameter()
.
For a complete list of all the new features, check out GDB’s NEWS file on sourceware. Everything dating back to and including GDB 11.1 is included in the rebase.
Happy (and more productive) debugging!