入门教程:如何使用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(板子地址:端口)
不错,后面试试 嗯,远程调试的方式用起来还是很方便的 很详细。 这个必须标记 Thank you !!! 不错,很好的帖子,下午试试 技术贴,,顶一下 牛逼,学习下。 一直都是ubuntu上面写,交叉编译丢板子运行,串口看效果。这种不知道是不是任何板子都可以支持呢?
技术贴,,顶一下 honami520 发表于 2018-11-21 12:12
一直都是ubuntu上面写,交叉编译丢板子运行,串口看效果。这种不知道是不是任何板子都可以支持呢?
...
只要GDB 通了都可以的,只不过这个IDE把GDB操作封装起来了而已。
这个IDE可以指定 sysroot 这样就不用板子往上位机传各种so了理论可以调的更快,还没时间验证。 正好需要,谢谢。。 MARK xuboluan 发表于 2018-11-21 12:41
只要GDB 通了都可以的,只不过这个IDE把GDB操作封装起来了而已。
这个IDE可以指定 sysroot 这样就不用板 ...
把gdb包含在工程里? huangqi412 发表于 2018-11-30 11:53
把gdb包含在工程里?
把GDB路径配置在IDE里,IDE调用了GDB。 测试有些简单QT程序, 还是可以调试, 一大就不行了, 说server 没有响应 学习了,下次用到再仔细看 之前折腾过,调试个HELLO WORD 的程序,肯定可以, 复杂的程序就崩了;而且单步呀,那些调试速度巨慢; 反正就是体验非常差;生不如死得感觉
现在我都是在X86的机器上先编译,调试好,再编译成ARM 的版本(QT 跨平台的好处);
什么时候linux的开发能做到好似IAR 那样就爽了; 谢楼主,字习了。 {:handshake:}学习了,多谢分享 mark一下:QT 远程调试
页:
[1]