最近使用gdb进行可执行程序的调试跟踪,命令行的字符界面太不方便了。
一直想给gdb做一个图形界面,现在开始干起来。
到gdb的开源网站可以查到,这种工作叫 front end (前端)开发。
做 gdb front end 开发,第一个想法肯定是找gdb的API库,libgdb之类的,应用程序接口,这种库在较低版本的库中有提供,后来版本不提供了。
其次,gdb本身是开源的,完全可以从gdb源代码内部进行修改,和自己的front end做数据交换,但是这样工作量太大了,也不利于软件以后随着gdb升级。
最后,想到通过解析gdb的命令行,这样前端软件比较独立,但是gdb的命令行如果不规范,或者以后有改变,那所有工作就白做了。
值得庆幸的是,gdb自身提供了一个这种接口,叫 machine interface ,简称 MI,
GDB/MI 是一个基于行的,面向机器的文本(text)界面接口,专门为gdb做二次开发设计的。
启动gdb/mi,用以下命令:
gdb --interpreter=mi
就是说,用mi做gdb的命令行解释器。
相对的,缺省的命令行解释器叫console
直接输入gdb,相当于输入:
gdb --interpreter=console
qt creator 自带的调试功能(基于gdb的部分),就是通过gdb/mi接口开发的,下面会提到,并且用到。
但是GDM/MI 有不少缺点,主要是因为它太老了,它的语法格式跟不上时代,而且因为很多成熟软件(如 QT Creator)是基于这种格式的,GDM/MI 已经不可能对它进行修改,否则现有软件将崩溃。只能进行扩展。
另外,gdb/mi也有一些已知的bug,权衡利弊,开发组也不打算修改了。
还有就是,gdb/mi还在继续开发中。
下面主要的工作,都在对gdb/mi输出格式的解析上。
联系方式 QQ : 83555727 Email 83555727@qq.com