gdb mi接口命令入门大全

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb mi接口命令入门大全相关的知识,希望对你有一定的参考价值。


入门的话,先看看我这两个博客

​​gdb调试常用概念整理_标biao的博客

​​关于调试器和IDE的一些认识_标biao的博客

gdb mi简介

gdb mi接口协议有3个版本 ​​GDB/MI Development and Front Ends (Debugging with GDB)​

与gdb版本对应关系如下:(gdb指的是gdb.exe(文中简称为gdb),而gdb mi指的是和gdb.exe的通信协议)

gdb

 新版本gdb照样兼容旧版本的gdb mi协议, 但是旧版本gdb当然用不了新版本的gdb mi协议。

建议用旧版本的gdb mi协议,因为,无论旧版本的gdb还是新版本的,都能成功使用。因为在嵌入式开发中,往往用的gdb都是版本多种多样,而且往往都比较旧(比如我的桌面程序开发gdb就是10.2版本,但是嵌入式gdb版本是7.10,版本差别很大,导致有些高版本的gdb mi命令在嵌入式gdb就用不了,下面的示例将会看到这一点)。

旧版本gdb mi参考资料

旧版本的gdb mi接口官方手册网址:(5.1版本)
​​​Debugging with GDB - Table of Contents​​ 关于整个gdb的

​Debugging with GDB - GDB/MI​​ 里面的gdb mi这部分的

精简的的中文参考博客 ​​GDB/MI 层命令介绍_coutcin的博客

该作者对该文档进行了大致翻译 ​​GDB/MI 命令总结_哭哭啼的博客

新版本gdb mi参考资料

官方网址:​​GDB/MI (Debugging with GDB)​

应用示例记录

这里旧版本:指5.1版本的gdb mi协议,新版本指9.1版本的gdb mi协议

  • 断点插入命令
    旧版本: -break-insert [ -t ] [ -h ] [ -r ] [ -c condition ] [ -i ignore-count ] [ -p thread ] [ line | addr ] [xx]代表可选项。 语义:-t 插入一个临时断点 -h 插于一个硬件端点 -r 插入一个正则断点,当函数名匹配正则表达式时有效 -c 插入一个条件断点 -i 插入一个指定无效次数的断点
    插入指定文件,行号的断点,-break-insert filename:lineNumber(嵌入式端gdb版本低,所以这样是对的)

    查看更多,就按照上面我推荐的博客去看看吧,不难


    新版本:
    -break-insert  --source "xx/main.c" --line 99这样的,但是这个在旧版本的gdb.exe中就不能识别,会报错 Unknown option -source"。

    所以特别注意,可能有些命令旧版本gdb 跟 新版本gdb不一样的,好不好使,就看gdb反馈的信息是不是^error,是的话,就看看是什么问题

以上是关于gdb mi接口命令入门大全的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令大全总结(看这一篇就够了)

通过管道在 gdb 的 MI 输出上级别触发的 epoll_wait() 不通知“(gdb)\n”行的存在

如何打破 GDB 中类的每个方法?

Eclipse 执行 MI 命令 -target-select remote 失败

DOS命令大全

代码调试篇:gdb调试快速入门指南