入门的话,先看看我这两个博客
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 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,是的话,就看看是什么问题