编译环境:
Ubuntu16.04 + gdb-7.9.1.tar.gz + ncurses-6.0.tar.gz
传统的gdb调试是GDB+gdbserver,对于大型的嵌入式程序来说,这种方法效率过低,特别是追踪低概率的段错误时。并且对调试环境较高,有时候程序在客户手里或者测试部,不可能要求他们都装上同样开发环境等等。
我们要做的只需要把gdb和执行程序拷贝到U盘,然后从U盘运行执行程序,挂机等待。问题复现时会有core文件产生,此时我们直接运行./gdb app core, 随后输入bt即可查看函数调用关系和死机位置,也可以进行其他的gdb命令操作,非常方便。
编写的Makefile可实现自动编译安装ncurese和gdb,只需修改这两个变量,根据你编译器和编译选项填入即可:
OSDRV_CROSS ?= arm-linux-gnueabihf
OSDRV_CROSS_CFLAGS ?= -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp
然后执行make命令,如果提示某些命令找不到,请检查或安装即可,编译好后会生成一个gdb-xxx的执行文件,拷贝到你板子上直接运行即可。
Makefile主要命令讲解:
TOOLS_TOP_DIR := $(shell pwd)
#如果是其他版本,请修改TOOL_TAR_BALL和TOOL_TAR_BALL2,使其对应具体的程序包
TOOL_TAR_BALL := gdb-7.9.1.tar.gz
TOOL_TAR_BALL2 := ncurses-6.0.tar.gz
TOOL_NAME :&