3.5. GDB 中兼容性破坏的更改

Red Hat Enterprise Linux 9 中提供的 GDB 版本包含几个破坏兼容性的更改。以下部分详细介绍了这些变化。

命令

  • gdb -P python-script.py 命令不再支持。

    改为使用 gdb -ex 'source python-script.py' 命令。

  • gdb COREFILE 命令不再支持。

    改为使用 gdb EXECUTABLE --core COREFILE 命令加载核文件中指定的可执行文件。

  • GDB 现在默认设置输出样式。

    这个新更改可能会破坏尝试解析 GDB 输出的脚本。使用 gdb -ex 'set style enabled off' 命令禁用脚本中的样式。

  • 命令现在根据语言为符号定义语法。

    info functionsinfo typesinfo variablesrbreak 命令现在根据 set language 命令所选择的语言为实体定义语法。通过将其设置为 set language auto 表示 GDB 将自动选择显示实体的语言。

  • set print raw frame-argumentsshow print raw frame-arguments 命令已被弃用。

    这些命令被 set print raw-frame-argumentsshow print raw-frame-arguments 命令替代。旧的命令可能会在以后的版本中删除。

  • 以下 TUI 命令现在区分大小写:

    • focus
    • winheight
    • +
    • -
    • >
    • <
  • helpapropos 命令现在只显示一次命令信息。

    现在,这些命令只显示一次命令的文档,即使该命令有一个或多个别名。这些命令现在显示命令名称,然后是其所有别名,最后是命令的描述。

MI 解释器

  • MI 解释器的默认版本现在是 3。

    MI 3 中更改了有关多位置断点(其在 MI 2 中语法不正确)信息的输出。这会影响以下命令和事件:

    • -break-insert
    • -break-info
    • =breakpoint-created
    • =breakpoint-modified

    使用 -fix-multi-location-breakpoint-output 命令在之前的 MI 版本中启用此行为。

Python API

  • 以下符号现已弃用:

    • gdb.SYMBOL_VARIABLES_DOMAIN
    • gdb.SYMBOL_FUNCTIONS_DOMAIN
    • gdb.SYMBOL_TYPES_DOMAIN
  • gdb.Value 类型有一个新的构造器,用于从 Python 缓冲对象和 gdb.Type 构造 gdb.Value
  • 现在,当没有过滤器或使用 backtrace 命令的 -no-filters 选项时,Python 帧过滤代码打印的帧信息与 backtrace 命令打印的帧信息一致。