长期以来,Linux平台缺少合适的可视化工具进行GDB调试,GDB命令行固然灵活,但是需要熟记各种命令,变量的查看,桟空间查看,都有相应命令,每次敲入命令相对可视化工具其实效率是比较低的。
笔者从事嵌入式开发的过程发现,用过的体验最好的开发工具是Lauterbach 公司的Trace32工具,RealView等工具也有类似的体验,这些工具功能强大,往往同时配置了GUI前端,硬件后端,同时支持多种协议,J-TAG,SWD,RDI,GDB等,主板bring up的过程中,这些工具可以方便的获取CPU或者各种硬件外设的寄存器状态,有的还具有强大的统计功能,可以计算函数调用次数,执行时间等。这些工具的特点就是功能全面,价格昂贵,比如Trace32工具一套可达数万元。
对于个人开发者来说,亟待使用一款廉价好用甚至免费的可视化调试工具,Linux平台可供选择的软件据笔者了解主要有insight和DDD。前者的缺点在于其和交叉编译链紧耦合,配置不同的编译链还需要重新编译,并且可支持的编译链很少,并且insight已经停止开发,而DDD的主要问题是bug太多,很容易崩溃,并且界面也很简单,很多功能没有实现。
GraphicGdb 是一款基于Linux的Gdb图形化调试工具,开发此工具的主要目的是在开发嵌入式软件的过程中,在线实时调试可以带来很高的开发效率,与市面上现有的调试工具相比,GraphicGdb 有如下特点:
1. 前端和后端分离,后端交叉编译链可自由配置。
2.统一使用GDB协议,这样如果调试普通的应用程序,只需在主板上跑GDBSERVER,前端使用此工具。如果需要调试boot等启动程序,只需购入价格低廉的Jlink等仿真器,这些工具实际提供了GDBSERVER功能,把主板的信息通过GDB协议发送出去,可以通过GraphicGdb解析(实际上任何可在命令行上实现的调试,都可用此工具配置)。
3. 其他基于gdb调试工具,比如开源工具insight,交叉编译的gdb和前端工具紧耦合,配置复杂,可使用的交叉编译链有限。
此工具使用QT开发,界面简洁,使用方便,调试信息丰富(调用栈,断电,寄存器状态,线程,应用程序输出等)。用户实现复杂功能也可直接输入GDB命令,相对于DDD等工具,有更好的易用性。
使用方式:
相对于冗长的PDF技术文档叙述,直接看图解实例是最高效的方法。
1.调试应用程序的配置
2.笔者通过qemu调试u-boot代码的配置,实际上也可用此方法调试任意版本的Linux内核代码或者通过
Jlink的配置,调试实际主板。
3.gdb需要初始化执行的命令
4.源码和可执行文件路径不一致的情况
5.调试主界面
6.调试汇编
7.调试COREDUMP
系统需求:
Debian 8(x86_64)
apt-get install exuberant-ctags
apt-get install qt5-default
apt-get install build-essential
apt-get install gdb
ubuntu 14.04(x86_64)
apt-get install exuberant-ctags
ubuntu 16.04(x86_64)
apt-get install exuberant-ctags
CentOS 7(x86_64)
yum install ctags-etags
实例
1.远程调试开发板helloworld
1) 交叉编译hellworld,注意gcc 加-g选项,交叉编译gdbserver
2) 开发板与主机用网线连接,并能互相ping通
3) 开发板上运行:
4) GraphicGDB配置
5进入调试
2,结合QEMU调试任意版本Linux内核
1)编译对应版本linux内核
2 ) 配置qemu,设置为debug模式,同时开放对应gdbserver端口
3)设置断点
4)
试用与注册
1.试用
下载链接:https://pan.baidu.com/s/1ojWFuiyt8w4CdMAC3pnGUg
进入debug代码后有5分钟的试用时间,可发邮件至wangxinyuan3@163.com 详细咨询。
2.注册