ARM-linux 下GDB 的移植 arm-linux 的gdb 移植分为两种情况
一种是交叉调试版
这一种模式是需要编译一个 arm-linux 版本 gdbserver (GDB 的stub 模块)
然后再编译一个 X86 版本交叉调试的gdb
为了与桌面版本身的gdb 区别开来,一般改名为 arm-linux-gdb
两者通过串口或者网络进行互联
还有一种是干脆把整个 gdb 移植成一个 ARM 的本地版
在开发板上直接用gdb 来调试
前一种方法是比较正统的方法
它 gdbserver 可以通过 arm-linux-gdb 直接在host 上单步调试target 的应用程序
并且可以与图形界面调试器配合进行图形界面调试
缺点就是target 资源较少
因此单步调试的速度并不是太快
因此实用性不算太强
如何交叉调试 arm-linux 的本地版一般只能做字符界面的
界面没有支持 GUI 的交叉调试版友好
而且单步调试速度也不算快
但是有几大大优点: 1
定位程序退出所在函数
判断程序退出的原因 3
通过条件断点分析异常情况时运行环境
用本地版gdb 运行程序时,当程序因段错误或其它原因退出程序时
可以通过 gdb bt(即 backtrace)来查看最后运行的堆栈
来判断出错时是在哪一个函数里退出
这样会大大加快定位错误的速度,这样有时需要几天的定位的错误,可能只需要几分钟即可定位,这在嵌入式开发里有很强实际效用
因此在这里我们把两种版本的gdb 都移植一下
本地版本的gdb 的移植 ARM 本地版需要 ncurse 的支持
这里移植是gdb 6
编译器是 arm-linux-gcc 4
操作系统是 arm-linux 2
4 ncurse 5
按照移植规范,ncurse 放入 libs 目录,gdb 解压