A.5. GDB 中的更改
Red Hat Developer Toolset 11.0 使用 GDB 10.2 提供。
从以前的 Red Hat Developer Toolset 版本开始添加了或修改了以下功能:
新功能
- 在支持此功能的架构上默认启用了多线程符号加载。这个更改为带有许多符号的程序提供了更好的性能。
- 文本用户界面(TUI)窗口可以水平排列。
- GDB 支持同时调试多个目标连接,但这种支持是实验性的且有限的。例如,您可以将每个低端连接到运行在另一台计算机上的不同的远程服务器,或者您可以使用一个低端来调试本地原生进程或一个 core dump 或某些其他进程。
新的和改进的命令
-
新的
tui new-layout name window weight [window weight…]命令创建一个新的文本用户界面(TUI)布局,您也可以指定布局名称和显示的窗口。 -
改进的
alias [-a] [--] alias = command [default-args]命令可以在创建新别名时指定默认参数。 -
set exec-file-mismatch和show exec-file-mismatch命令集,并显示新的exec-file-mismatch选项。当 GDB 附加到正在运行的进程时,此选项控制 GDB 在检测到当前由 GDB 加载的可执行文件和用来启动进程的可执行文件不匹配时如何做出反应。
Python API
-
gdb.register_window_type函数在 Python 中实现新的 TUI 窗口。 -
现在,您可以查询动态类型。
gdb.Type类的实例可以有新的布尔属性dynamic,gdb.Type.sizeof属性对动态类型可以有值None。如果Type.fields()返回动态类型字段,则其bitpos属性的值可以是None。 -
新的
gdb.COMMAND_TUI常量将 Python 命令注册为 TUI 帮助类命令的成员。 -
新的
gdb.PendingFrame.architecture()方法检索待处理帧的架构。 -
新的
gdb.Architecture.registers方法返回gdb.RegisterDescriptorIterator对象,后者是返回gdb.RegisterDescriptor对象的迭代器。此类对象不提供寄存器的值,但帮助了解哪些寄存器可用于某一架构。 -
新的
gdb.Architecture.register_groups方法返回gdb.RegisterGroupIterator对象,后者是返回gdb.RegisterGroup对象的迭代器。此类对象帮助了解哪些寄存器组用于某一架构。