• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
指剑问道
Nothing can stop my yearning for freedom
博客园    首页    新随笔    联系   管理    订阅  订阅
GDB MI接口

功能和目的

GDB的MI接口是一个面向机器的基于行操作的文本接口。通过--interpreter=mi可以进入该模式。主要用于继承开发环境(一般包含编辑器,编译器,连接器,调试器等)中的一个调试组件。

符号和术语说明

  • | 区分两个选项。

  • [ something ] 说明该部分内容是可选的,可以给出也可以不给出。

  • ( group )* 表示括号内的内容可以重复零次或多次。

  • ( group )+ 表示括号内的内容可以重复一次或多次。

  • ( group ) 表示括号内的组只能出现一次。

  • "string" 表示文字字符串。

GDB/MI 前端与GDB的交互涉及三个部分——发送到 GDB 的命令、对该命令的响应和通知。每个命令都会产生一个响应,指示命令执行成功或错误。对于不恢复目标的命令,响应都包含请求的信息。对于恢复目标的命令,响应仅指示目标是否成功恢复。通知是报告目标状态(或GDB状态)的一种机制,它无法和命令关联并作为该命令响应的一部分进行响应。

重要的通知示例:
  • 执行通知。 这些用于报告目标状态的变化——当目标恢复或停止时。 在恢复命令的响应中包含此信息是不可行的,因为一个恢复命令可能会在不同的线程中导致多个事件。此外,在目标中发生任何事件之前可能会经过相当长的一段时间,而前端需要知道是否 恢复命令本身已成功执行。

  • 控制台输出和状态通知。 控制台输出通知用于报告 CLI 命令的输出以及其他命令的诊断。 状态通知用于报告长时间运行的操作的进度。当然,在命令响应中包含此信息意味着在命令完成之前不会产生输出,这是不可取的。

  • 一般通知。 命令可能会对 gdb 或目标状态产生超出其官方目的的各种副作用。 例如,命令可以更改选定的线程。 尽管此类更改可以包含在命令响应中,但使用通知可以实现更加正交的前端设计。

无法保证每当 MI 命令报告错误时,gdb 或目标都处于任何特定状态,特别是状态不会恢复到处理 MI 命令之前的状态。 因此,每当 MI 命令导致错误时,我们建议前端刷新用户界面中显示的所有信息。

posted on 2023-12-12 16:35  指剑问道  阅读(448)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3