xuboluan 发表于 2018-11-7 02:40:37

入门教程:如何使用QT Creator单步调试i.mx6Q嵌入式程序

本帖最后由 xuboluan 于 2018-11-7 02:40 编辑

开发环境:
开发板 :TQIMX6Q_BASEC_V1 LVDS显示屏
ROOTFS:rootfs_ubuntu_IMX6_for_linux_V3.0_R1.3(自带qt环境)
虚拟机:ubuntu_14.04_lts
GCC版本GCC-6(虚拟机)
GDB版本 GDB-8.2(虚拟机) 下载地址 http://ftp.gnu.org/gnu/gdb/
SSH版本 Openssh_7.22(板子) OpenSSH_6.6.1p1(虚拟机)主机必须能连接板子的ssh
QT Creator版本4.7.2 下载地址:http://download.qt.io/official_releases/qtcreator/4.7/4.7.2/
参考资料:https://youtu.be/kP7uvOu9hoQ
实现功能:
单步调试linux程序。

由于这块板子官方给的交叉编译工具自带了交叉编译过的QT5.5 所以这里不涉及QT5.5的交叉编译问题。
实现步骤:
1/安装QT Creator
./qt-creator-opensource-linux-x86_64-4.7.2.run
2/打开QT Creator ->工具->选项->构建和运行








在程序的.pro文件中加入

GUI程序需要设置运行时的环境变量


其中target.path=需要在开发板中部署的路径


3.然后单击运行就可以把程序部署在板子上,单击调试就可以进行单步调试。效果如下图。




写在后面:
关于QT Creator 版本:高版本不能与qt5.5共存需要很多设置,版本太低调试的时候会出现莫名其妙的BUG。
关于GDB版本:前期排查原因的时候换掉了gdbserver 与 gdb版本,所以就编译使用了最高版本。
关于GCC:低版本的GCC编译不过高版本的GDB所以换掉了
用到的指令记录:
#GDB编译
sudo apt-get -f install

sudo apt-get install texinfo

sudo apt-get install libncurses5-dev

sudo apt-get install m4

sudo apt-get install flex

sudo apt-get install bison

wget http://ftp.gnu.org/gnu/gdb/gdb-8.2.tar.gz

mv -i gdb-8.2.tar.gz /opt/GDB/

cd /opt/GDB/

sudo apt-get install python-dev

tar -zxvf gdb-8.2.tar.gz

cd gdb-8.2


./configure --target=arm-linux-gnueabihf--prefix=/opt/GDB/arm-gdb8.2 --with-python

make -j8

make install

cd ./gdb/gdbserver

./configure --target=arm-linux-gnueabihf --host=arm-linux-gnueabihf

make CC=/opt/EmbedSky/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

#/gdb-8.2/gdb/gdbserver 中生成了 gdbserver   把他下载到目标板上 ./gdbserver 192.168.1.7:3000 testprg (主机地址:端口 调试软件)

#/arm-gdb8.2/bin中生成了 arm-linux-gnueabihf-gdb 。在linux主机上./arm-linux-gnueabihf-gdb即可运行主机上的GDB

#(gdb) target remote 192.168.1.5:3000(板子地址:端口)

wwkkww 发表于 2018-11-7 03:06:44

不错,后面试试

yj_yulin 发表于 2018-11-7 07:37:08

嗯,远程调试的方式用起来还是很方便的

so_so_so_so 发表于 2018-11-7 14:05:50

很详细。

tear604922959 发表于 2018-11-7 14:43:31

这个必须标记

liang16888 发表于 2018-11-21 11:42:48

Thank you !!!

广轻电气091 发表于 2018-11-21 11:45:28

不错,很好的帖子,下午试试

XIVN1987 发表于 2018-11-21 11:58:48

技术贴,,顶一下

hyghyg1234 发表于 2018-11-21 12:06:02

牛逼,学习下。

honami520 发表于 2018-11-21 12:12:14

一直都是ubuntu上面写,交叉编译丢板子运行,串口看效果。这种不知道是不是任何板子都可以支持呢?

casterbn 发表于 2018-11-21 12:16:31


技术贴,,顶一下

xuboluan 发表于 2018-11-21 12:41:24

honami520 发表于 2018-11-21 12:12
一直都是ubuntu上面写,交叉编译丢板子运行,串口看效果。这种不知道是不是任何板子都可以支持呢?
...

只要GDB 通了都可以的,只不过这个IDE把GDB操作封装起来了而已。
这个IDE可以指定 sysroot 这样就不用板子往上位机传各种so了理论可以调的更快,还没时间验证。

Phonse 发表于 2018-11-21 16:17:18

正好需要,谢谢。。

koenlee93 发表于 2018-11-29 19:34:25

MARK                                                      

huangqi412 发表于 2018-11-30 11:53:21

xuboluan 发表于 2018-11-21 12:41
只要GDB 通了都可以的,只不过这个IDE把GDB操作封装起来了而已。
这个IDE可以指定 sysroot 这样就不用板 ...

把gdb包含在工程里?

xuboluan 发表于 2018-11-30 12:37:28

huangqi412 发表于 2018-11-30 11:53
把gdb包含在工程里?

把GDB路径配置在IDE里,IDE调用了GDB。

xp54312 发表于 2018-12-29 15:09:53

测试有些简单QT程序, 还是可以调试, 一大就不行了, 说server 没有响应

ckhf 发表于 2019-5-17 23:19:55

学习了,下次用到再仔细看

polarbear 发表于 2019-5-18 08:44:13

之前折腾过,调试个HELLO WORD 的程序,肯定可以, 复杂的程序就崩了;而且单步呀,那些调试速度巨慢; 反正就是体验非常差;生不如死得感觉

现在我都是在X86的机器上先编译,调试好,再编译成ARM 的版本(QT 跨平台的好处);

什么时候linux的开发能做到好似IAR 那样就爽了;

JohnSmith 发表于 2019-5-19 11:36:19

谢楼主,字习了。

windancerhxw 发表于 2019-9-17 17:25:45

{:handshake:}学习了,多谢分享 mark一下:QT 远程调试
页: [1]
查看完整版本: 入门教程:如何使用QT Creator单步调试i.mx6Q嵌入式程序