gdb 17.1 是 gnu gdb 17 系列首个正式版,重点增强处理器安全机制(如 x86-64 cet 和 aarch64 gcs 支持)、risc-v rv64gc 记录回放、多线程筛选、共享库地址显示及 linux 多 inferior 调试能力。

2025 年 12 月 20 日,GNU GDB 项目发布 GDB 17.1。官方信息显示,该版本围绕现代处理器安全机制、记录回放、多线程管理、共享库显示和 Linux 调试能力进行了多项增强。GDB 17.1 是 GDB 17 系列的首个正式版本,随后发布的 GDB 17.2 主要用于修复兼容性和稳定性问题。对于需要使用新一代处理器特性或维护复杂多线程程序的开发团队而言,GDB 17.1 是一个具有阶段性意义的版本。
处理器安全能力是该版本的重要变化之一。GDB 17.1 增加了对 x86-64 CET 影子栈的支持,并能够调试使用 AArch64 Guarded Control Stacks 的 Linux 程序。影子栈和受保护控制栈用于增强返回地址和控制流的安全性,但这类机制也会给调试器带来新的寄存器、栈帧和异常处理要求。调试器若不能正确理解相关运行状态,开发者在分析安全机制触发、异常返回或调用栈变化时就可能遇到信息缺失。
在记录和回放方面,GDB 17.1 将 record 功能扩展到 RISC-V rv64gc 架构。记录回放可以让开发者在程序运行后检查先前执行过的指令和状态,对于难以稳定复现的并发问题、边界条件和底层异常具有帮助。不过,记录执行通常会带来额外的运行开销,且并不是所有程序和硬件环境都能获得完全一致的回放结果,因此更适合测试、诊断和问题复现阶段。
多线程调试也得到改进。新版 info threads 命令增加了按停止状态和运行状态筛选线程的选项。当一个服务包含大量线程时,开发者无需从完整列表中逐项查找,可以快速聚焦于当前仍在执行或已经停止的线程。官方还改进了 Linux 和 FreeBSD 中 共享库地址范围的显示方式,使动态库加载位置的信息更加完整,有助于排查动态链接、地址空间布局和库版本冲突。
GDB 17.1 还改进了 Linux 检查点对多个 inferior 的支持,并增强了链接器命名空间处理。对于调试复杂的进程、动态加载组件以及多进程程序,这些变化可以减少调试状态管理方面的限制。与此同时,GDB 在部分 Linux 架构上增加了 TLS 后备支持,用于在缺少 libthread_db 时提供替代能力。
GDB 17.1 发布后,官方继续通过 GDB 17.2 修复 DAP、MUSL、终端显示和字符串处理问题。当前新项目应优先使用 17.2,而 17.1 更适合旧环境兼容、版本回归和历史问题复现。使用时仍需注意编译器、调试信息、目标系统和调试器之间的版本关系,尤其是在使用 CET、AArch64 GCS 和 RISC-V 记录回放等功能时,应先确认目标系统具备相应支持。










