首页 » 嵌入式笔记 » 正文

利用QT Creator Eclipse等通过GDB调试arm linux程序

还在用vim来写代码?? you are out!,现在linux下的IDE这么优秀,你为什么不用.

不废话IDE的好处了,如果你做过stm32开发的话就知道一个程序如果能在线调试的话那是多么地美好.特别是像我这样的菜鸟.
通常情况下,芯片SDK里包含的交叉编译器gdb版本低,并且缺失某些功能,或是根本没有提供gdb,这里需要自已编译gdb,如果交叉编译器够新,gdb版本够高则不需要自已编译gdb

交叉编译gdb

主机环境准备

首先下载gdb:http://ftp.gnu.org/gnu/gdb/ 注:不一定要最新版本.像QT5.7要求gdb版本为 7.7
然后需要在主机上安装必要的支持库,特别注意需要 python2.7-dev pythonxx-dev

sudo apt-get install build-essential cmake u-boot-tools uboot-mkimage libusb-1.0-0 libusb-1.0-0-dev git wget fakeroot kernel-package zlib1g-dev libncurses5-dev libc6:i386 lib32stdc++6 lib32z1  python2.7-dev texinfo

编译 gdb

解压gdb,并进入目录,然后用 ./config来生成makefile文件….肯定得加参数了..
./configure --target=arm-hisiv200-linux --program-prefix=arm-hisiv200-linux- --prefix=$PWD/gdb-build --with-python
./configure --target=aarch64-linux-gnu --program-prefix=aarch64-linux-gnu- --prefix=/work/lib/gdb --with-python=/usr/bin/python3
arm-hisiv200-linux 是目标板的交叉编译器前缀. arm-hisiv200-linux- 是生成文件的前缀,你也可以随便写. --prefix=$PWD/gdb-build 安装目录, --with-python 让gdb支持python, qt以及vscode调试需要这个.
config完成后 make 再 make install,则会在 $PWD/gdb-build这个目录中生成一些文件,其中 arm-hisiv200-linux-gdb就是最主要的文件,并且这个文件是在主机里运行的,qt eclipse等就是调用的它.

特别注意:编译好后不要移动程序的路径,不要删除源代码目录,狗日的QT调试时有绝对路径依赖.

编译 gdbserver

进行 gdb/gdbserver目录,再次config
./configure --target=arm-hisiv200-linux --host=arm-hisiv200-linux
自行将arm-hisiv200-linux换成自已的交叉编译器前缀
make后会生成 gdbserver 可执行文件, 这个文件在目标板上运行. 我一般是把这个文件拷贝到需要调试的程序那个目录.

在目标板上运行gdbserver

编译好gdbserver后,我们把gdbserver拷贝到需要调试的程序相同目录.然后运行 ./gdbserver :1234 testprogram
其中 :1234表示gdbserver端口为1234,testprogram为被调试的程序.接下来就可以通过qt eclipse等链接过来进行远程debug了.

QT Creator配置

构建和运行选项里新环境就不多说了,只要注意debuggers里新增的gdb得是新编译出来的那个gdb.
当程序通过编译后, 选择调试->开始调试->attach to Running Debug server.其中 服务器端口即gdbserver的端口,Override server address为目标板的IP,本地可执行档则是被调试的程序.其他可以不填,然后点击OK,不出意外的话就可以进行调试了.

eclipse 配置

不想打字了..只截图


CMAKE 转为 eclipse调试

在cmake工程中新建个目录 比如 cdt ,然后进入此目录,运行:cmake -G"Eclipse CDT4 - Unix Makefiles" -D CMAKE_BUILD_TYPE=Debug ../
之后在eclipse中导入 maekfile项目即可

发表评论