Qt Creator远程调试嵌入式ARM开发板

1  环境

Win10 64位系统上通过Virtual Box安装了一个Ubuntu虚拟机。

ubuntu的版本:Linux kernel 4.15.0-142-generic #146~16.04.1-Ubuntu SMP

Ubuntu虚拟机中安装了Qt Creator,其版本为:

Qt Creator 4.5.1

Based on Qt 5.10.1 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit)
Built on Feb 10 2018 04:21:03
From revision 24cd0b1cd6

开发板系统:执行uname -a 显示:

Linux imx6qsabresd 4.14.98+g5d6cbeafb80c #1 SMP PREEMPT Wed Nov 25 13:54:56 CST 2020 armv7l armv7l armv7l GNU/Linux

交叉编译工具链

虚拟机上已经配置好了开发板厂家提供的交叉工具编译链。一定要是板子厂家提供的交叉编译工具链!!务必严格对应!

交叉编译gcc编译器路径(这只是我个人的,因人而异):

/opt/fsl-imx-fb/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc

交叉编译g++编译器路径(这只是我个人的,因人而异):

/opt/fsl-imx-fb/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++

交叉编译gdb路径(这只是我个人的,因人而异):

/opt/fsl-imx-fb/4.14-sumo/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb

如果不知道交叉编译工具链的gdb在哪个具体路径,可以在虚拟机上执行: find / -name *gdb

2 必要的前提

  网络通达性

虚拟机必须能与开发板建立网络通讯,能互相ping。

比如本人的虚拟机IP:192.168.40.159

开发板IP: 192.168.40.54

Win10 IP: 192.168.40.181

三者处于同一网段之下。

gdbserver

确保开发板上已经安装了gdbserver。如果没有安装,请自行查询办法。

一般位于/usr/bin目录之下。同样可通过find / -name gdbserver查找。

能往开发板文件系统上传输文件

一般采用NFS挂载、Tftpd工具、scp手段等等。自由选择。

3 Qt Creator配置

 在项目配置中,选择Device,输入开发板的IP,SSH端口默认位22,有用户名密码的输入密码,若没有,置空即可。之后点击Test,网络没问题的话会有很明显的连接成功提示。最后,点击Ok.

Qt Creator远程调试嵌入式ARM开发板_第1张图片

在选择Bulid&Run,新建Debugger(指定交叉编译工具链的gdb)

Qt Creator远程调试嵌入式ARM开发板_第2张图片

项目的编译器设置:

Qt Creator远程调试嵌入式ARM开发板_第3张图片

项目的Kits设置:

Qt Creator远程调试嵌入式ARM开发板_第4张图片

4 调试步骤

1,使用交叉编译工具链,编译你的工程,得到可执行文件。

2,将可执行文件拖进板子的某个目录,比如/opt/app目录下。

每当源码变动的时候,请一定记得重新执行步骤1,2。

3, 在xshell等终端环境下进入到板子的/opt/app目录下,执行gdbserver .

gdbserver 192.168.40.159:1234 ./filename (你的可执行文件名)

如上文所述,192.168.40.159为win10上Ubuntu虚拟机的IP地址,1234是指定一个服务端口。

执行gdbserver 192.168.40.159:1234 ./filename之后,能在终端看到程序启动的PID等信息,说明启动OK!

4,在虚拟机上的QtCreator中,

Qt Creator远程调试嵌入式ARM开发板_第5张图片

 再选右侧的Attach to running debug server,

Qt Creator远程调试嵌入式ARM开发板_第6张图片

点击OK,这种远程调试会需要十几二十秒的加载启动时间,没有本地调试那么快。

之后在QT Creator中打断点,看变量,就行了!!!所有的Print输出在QT Creator是不可见的,需要在连接到开发板的终端界面中查看。

你可能感兴趣的:(Linux/C++,QT)