A.5. GDB 中的更改

Red Hat Developer Toolset 11.0 与 GDB 10.2 一起发布。

自以前的 Red Hat Developer Toolset 发行版本以来,添加了或修改了以下功能:

新功能

  • 在支持此功能的架构中默认启用多线程符号载入。此更改为带有很多符号的程序提供更好的性能。
  • 文本用户界面(TUI)窗口可以水平排列。
  • GDB 支持同时调试多个目标连接,但这个支持是实验性并有限。例如,您可以将每个人连接到在不同的机器上运行的不同远程服务器,也可以使用一个不合者调试本地原生进程或核心转储或某些其他进程。

新的和改进的命令

  • 新的 tui new-layout name window weight [window weight…] 命令创建一个新的文本用户界面(TUI)布局,您还可以指定布局名称和显示窗口。
  • 改进的 别名 [-a] [--] alias = command [default-args] 命令在创建新别名时指定默认参数。
  • set exec-file-mismatchshow exec-file-mismatch 命令集和显示新的 exec-file-mismatch 选项。当 GDB 附加到正在运行的进程时,这个选项控制在当前由 GDB 加载的可执行文件和用于启动进程的可执行文件之间是否检测到不匹配时 GDB 如何做出反应。

Python API

  • gdb.register_window_type 函数在 Python 中实现新的 TUI 窗口。
  • 现在,您可以查询动态类型。gdb.Type 类的实例可以具有新的布尔值属性 动态,而 gdb.Type.sizeof 属性的值可以具有 None 值的动态类型。如果 Type.fields() 返回了动态类型的字段,则其 bitpos 属性的值可以是 None
  • 新的 gdb.COMMAND_TUI constant 将 Python 命令注册为 TUI 帮助类命令的成员。
  • 新的 gdb.PendingFrame.architecture() 方法检索待处理帧的架构。
  • 新的 gdb.Architecture.registers 方法会返回 gdb.RegisterDescriptorIterator 对象,它会返回 gdb.RegisterDescriptor 对象。此类对象不提供注册的值,但有助于了解哪些寄存器可用于架构。
  • 新的 gdb.Architecture.register_groups 方法会返回 gdb.RegisterGroupIterator 对象,它会返回 gdb.RegisterGroup 对象。这样的对象有助于了解哪些寄存器组可用于架构。