GDB 的MI接口
背景介绍:
libgdb过时了,目前的GDB调试前端都不用libgdb
目前有两种比较流行:
- MI接口,现在应该是MI II接口,是Eclipse CDT所采用的方式
- emac输出接口,这个似乎有更多的调试前端所采用,例如DDD,kdbg,codeblocks等等
另外还有一种比较另类的一种方式:insight,直接把gdb给包含进去了
MI不但包括了CLI的所有命令,还具备一些CLI所不提供的功能,也就是说MI的命令一般与gdb的命令有一个映射的关系。当然,MI接口的设计初衷是面向将 GDB作为系统组件之一的复杂系统。在类似于DDD,Insight等以GDB为后端(backend)的GUI debugger的实现中,就是充分利用了GDB MI接口。MI最大的不足在于其输出的文本流接口比较复杂,必须很熟悉其输出格式才能理解,不如CLI输出直观。
MI(翻译为Machine Interface)。因为最近在用Eclipse的CDT调试C/C++,当然Eclipse本质gdb的调用,对于gdb的命令很多人可能都已经很熟悉了,本文介绍的mi层命令可能很少有人用到,它也是gdb的一部分,主要目的是为一些目标系统如IDE等提供调试功能,如eclipse下c/c++的cdt插件的底层就是调用的mi层命令,cdt的包里面有两个类RxThread,TxThread就是一个发送mi命令,一个接收返回数据的,大家有兴趣可以研究下。
进入命令 gdb --interpreter mi [exec_file]
退出命令 quit
mi的命令总共分为以下几个部分:
1.断点(Breakpoint)
2.程序环境(Program Context)
3.线程(Thread)
4.程序执行(Program Execution)
5.栈(Stack)
6.变量(Variable)
7.数据(Data)
8.跟踪点(Tracepoint)
9.符号(Symbol)
10.文件(File)
11.目标数据(Target Manipulation)
12.其它杂项
像我们在Eclipse 的console上见到的-var-evaluate-expression,-stack-list-locals,-exec-continue 诸如此类的都是mi的命令。
references:
http://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_211.html#SEC216
http://jlspyaozhongkai.blog.163.com/blog/static/116057464200995103415205/
http://blog.csdn.net/coutcin/article/details/1074330 (一些mi命令详解可以参考这里)
http://www.ibm.com/developerworks/cn/opensource/os-eclipse-cdt-debug1/
http://www.ibm.com/developerworks/cn/opensource/os-eclipse-cdt-debug2/
GDB 的MI接口的更多相关文章
- Visual Studio 2015中使用gdb远程调试linux程序
VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用. 如果可以使用VS来调试linux程序,应该是一件比较愉快的事情. 这在2015中变得可能,因为从2015开始VS支持An ...
- IP多媒体子系统(IP Multimedia Subsystem,IMS)
目录 1 什么是IP多媒体子系统[1] 2 IMS产生的背景[2] 3 IMS的特点分析[3] 4 IMS中的功能实体[3] 5 IMS中的接口和协议[3] 6 参考文献 [编辑] 什么是IP多媒 ...
- Go+sublime text3的环境搭建
1.安装Go语言. .msi下载地址:http://download.csdn.net/detail/u014075041/9555543 根据提示安装成功! 在命令行中执行 go env 有提示 ...
- AMAB interconnector PL301(二)
1)Frequency Conversion Components:包含三种component. AXI-AXI async bridge:拥有两种mode:bypass mode 和 async m ...
- AMBA interconnector PL301(一)
HPM(High-Performance Matrix)是一个自生成的AMBA3 bus subsystem. 由一个AXI bus matrix,Frequency Conversion Compo ...
- macos 下通过sublime text 3 + gosublime+sublimegdb 开发注意事项
1.macos系统10.13.4下 安装gdb8.0可以正常调试,而gdb8.1不能正常调试,需要跳过这个坑 2.需要对gdb 8.0进行软件签名 3.通过gosublime 运行(cmd+b),添加 ...
- Sublime Text 2搭建Go开发环境,代码提示+补全+调试
本文在已安装Go环境的前提下继续. 1.安装Sublime Text 2 2.安装Package Control. 运行Sublime,按下 Ctrl+`(`在Tab键上边),然后输入以下内容: im ...
- CentOS 上使用vscode 调试百度大数据分析框架Apache Doris BE
A: 前期准备工作 1. 安装vscode,详细请参见vscode官网https://code.visualstudio.com/docs/setup/linux,摘要如下: sudo rpm --i ...
- Sublime Text 2搭建Go开发环境
Sublime Text 2搭建Go开发环境,代码提示+补全+调试 cceevv · 2014-10-11 00:00:06 · 10496 次点击 · 预计阅读时间 3 分钟 · 5分钟之前 开始浏 ...
随机推荐
- VS013的单元测试去哪里了
需要安装这个插件 http://visualstudiogallery.msdn.microsoft.com/45208924-e7b0-45df-8cff-165b505a38d7
- hdu-1598
思路: 首先如果想到了Kruskal算法,那么下一步我们可能马上会想:那我们就从头开始写这个算法吧.然后一写就很容易发现一个问题——如果按照正常的Kruskal算法来做,那么start到end的舒适度 ...
- mysql导入数据大小设置方法
MySQL导入数据库文件最大限制2048KB和phpmyadmin导入数据最大限制2048KB的解决方法 解决办法: 1.打开php.ini.找到 upload_max_filesize . memo ...
- [原创]安卓使用Termux做渗透测试(演示sqlmap安装,并附上一个神器)
由于手机kali太大,并且MIUI8+Android6.0的我.用手机kali不是太方便(懒得捣鼓),所以另找道路,用手机作渗透测试. 1.下载一个Termux,并授予ROOT权限. 2.打开之后输入 ...
- DataGrid横向滚动条无法拖动的问题
项目中经常遇到一些问题,这些问题可能很简单,但是之前从未遇到,可能经过了一番谷歌,也可能是查阅了MSDN,或是借鉴了大牛博客,逐渐有了些眉目,为了将这些东西落地,也为了将来之不易的东西记录下来,以备今 ...
- SWFLoader交互
主应用程序: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx=& ...
- ajax弹出窗口
提取自ZCMS的弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻,外观漂亮: 兼容ie6/7/8.firefox2 ...
- hdu 4605-Magic Ball Game(树状数组)
题目大意: 给你一棵二叉树,每个节点有一个w值,现在有一颗小球,值为x,从根节点往下掉,如果w==x,那么它就会停止:如果w>x,那么它往左.右儿子的概率都是1.2:如果w<x,那么它往左 ...
- HDOJ 5093 Battle ships 二分图匹配
二分图匹配: 分别按行和列把图展开.hungary二分图匹配. ... 例子: 4 4 *ooo o### **#* ooo* 按行展开. .. . *ooo o#oo oo#o ooo# **#o ...
- Eclipse 4.2 + Tomcat 7.x + JDK 7 搭建Java Web开发环境
1. 准备工具 Eclipse 4.2 (到官网下载:http://www.eclipse.org/downloads/ 要下载Eclipse IDE for Java EE Developers ...