Qt5远程调试嵌入式linux
主机环境:Ubuntu 18.04.4 LTS
嵌入式环境:Linux 3.2.0
Qt版本:Qt Creator 4.5.0, Qt5.9.4(Gcc 5.3.1)
交叉编译器版本:arm-none-linux-gnueabi-gcc
按本记录步骤操作之前需要确保已掌握配置交叉编译工具链、新建Qt工程。
1.安装gdb工具
1.1安装gdb-multiarch
主机安装gdb-multiarch,可直接在终端: sudo apt-get install gdb-multiarch。
我安装的版本是8.1
终端输入gdb-multiarch --version可查询版本。

1.2安装gdbserver
嵌入式端安装gdbserver。安装步骤如下:
(1)下载gdb源码:可在https://ftp.gnu.org/gnu/gdb/下载,这里我下载的版本是7.7。
(2)编译gdbserver。由于主机端使用gdb-multiarch,这里就不编译gdb只编译出gdbserver供嵌入式端使用。
找到下载的gdb-7.7源码,tar -xvf gdb-7.7解压。cd进入../gdb-7.7/gdb/gdbserver目录,配置:./configure --target=arm-linux --host=arm-none-linux-gnueabi
--prefix=/home/ctools/gdb-7.7/gdb/gdbserver/build。
其中--target=arm-linux表示目标主机即嵌入式设备是arm平台;
--host=arm-none-linux-gnueabi表示交叉编译工具链是arm-none-linux-gnueabi-gcc;
--prefix=... 表示生成文件路径。
host和 prefix参数需要根据相应编译器和路径自行替换。
运行即可生成makefile 文件,查看如下:

之后make,等待编译结束,将生成的gdbserver拷贝至嵌入式设备路径/usr/bin处。生成的gdbserver文件在../gdb/gdbserver路径,不在上述--prefix指定路径。
执行gdbserver --version可查询版本及是否安装成功。

至此,主机和嵌入式设备gdb工具都已安装完毕。
2.配置Qt工程环境
2.1 配置目标设备
选择/Tools->Option进入如下界面,选择Device。这里我用的是ssh登录。

Add添加设备,在Name处填入设备名称,这里是”ARM-Debug”,Host name处填入设备的ip地址,SSH port处填入ssh端口号,username和password处填入设备的登录名和登录密码。如果设备已上电与PC连接好可点击Test测试。如果连接成功可弹出如下界面,如果连接失败,可以PC先通过ssh登录arm板再进行测试。

2.2配置调试器
选择Build&Run->Debuggers进入如下界面。选择”Add”新建一个,名称自取,这里是“arm-m335x”,path路径处选择1中gdb-multiarch安装路径,通常为/usr/bin/gdb-multiarch。选择OK保存。

2.3配置目标平台
选择Build&Run->Kits,Add新建一个目标平台。Name处填入名称,这里是ARM。Device处选择2.1中配置的设备,Debugger处选择2.2中配置的调试器。另外,Compiler 和 Qt version 需选择对应的交叉编译环境,这里不做介绍。

至此,Qt环境已配置完毕。
3.新建工程测试
3.1 新建Qt工程,这里不做介绍。
3.2修改目标文件路径
选择.pro文件,加入如下两行。
#add run/debug path: /mnt on arm device
target.path = /mnt
INSTALLS += target
/mnt为可执行文件在嵌入式设备中调试运行目录。
3.3运行
确保Qt工程编译完成,点击运行在嵌入式设备即可运行当前程序。如果程序有调试输出(qDebug)可在软件“Application Output”观察程序输出。
3.4调试
确保Qt工程编译完成,点击调试在嵌入式设备即可运行当前程序,PC端Qt也可打断点调试。
至此,Qt远程调试ARM介绍完成。
本文介绍了如何在Ubuntu 18.04上使用Qt Creator 4.5.0和Qt5.9.4远程调试Linux 3.2.0上的嵌入式应用。首先,主机上安装gdb-multiarch和gdbserver,然后在嵌入式设备上编译gdbserver。接着,配置Qt工程环境,包括设置目标设备、调试器和目标平台。最后,新建工程并测试远程调试功能。
5145





