您尚未登录。

楼主 # 2023-08-11 17:42:47

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

想用qtcreator通过ssh调试板子上运行的qt程序,结果总是通不过。

板子已经打开sshd服务了,pc上终端可以通过ssh登陆板子了。
qtcreator打开选项-设备,选择remote linux设备,输入ip地址相关,旁边有个按钮,可以打开shell登陆板子。说明这部分没问题。
但是kid设置后,工程里,选择run,结果总是报错。

/xxx/AllWinner/t113s3/qt-everywhere-opensource-src-5.12.9/t113-qt/mkspecs/features/toolchain.prf:76: error: Variable QMAKE_CXX.COMPILER_MACROS is not defined.
:-1: error: Project ERROR: failed to parse default search paths from compiler output
/XXX/Qt5/t113-s3/modbusmaster/master.pro:-1: error: 分析文件/XXX/Qt5/t113-s3/modbusmaster/master.pro时发生错误,放弃中。

最近编辑记录 Gentlepig (2023-08-11 17:44:07)

离线

楼主 #2 2023-08-14 08:48:20

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 想用qtcreator通过ssh调试板子上运行的qt程序,结果总是通不过。

海石生风 说:

编译器是MSVC吧?换用GCC编译器,Windows版的叫MinGW
PS:现在的新手在提问时老是只给出少得可怜的相关信息,别人看了也懒得追问,于是没人鸟。

感谢回复。
PC环境是ubuntu22.04, gcc11。

之所以想用qtcreator+ssh调试板子上运行的程序,是因为编译的程序在板子上运行后卡死,通过adb shell进入后top发现,该程序进程CPU占用率50%,另50%是adb shell占用。
Q群里请教了调试方法,有网友指明可以qtcreator+ssh调试,可以打断点。

离线

楼主 #3 2023-08-14 09:04:32

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 想用qtcreator通过ssh调试板子上运行的qt程序,结果总是通不过。

现在先用的是qt的一个例程,modbus master例程。如果kit套件里,不选择为远程linux设备,而选择本地编译,仍选择交叉编译的gcc,则可以生成可执行文件,拷贝到arm上可以运行。

kit套件里,设置为远程linux设备,则应该是无法正常打开工程,左侧工程列表里只有pro文件,而看不到头文件、源文件等。

-----------------------------------------

arm板子启动sshd时有这个警告:

/sshd start                                        
root@TinaLinux:/etc/init.d# /etc/rc.common: line 128: procd_add_mdns: not found

不过pc上用ssh可以登陆这个板子。

----------------------------------------

qtcreator里设备这里点击测试,有如下:

Sending echo to device...
Device replied to echo with expected contents.

Checking kernel version...
Linux 5.4.61 armv7l

检查指定端口是否可用...
所有指定的端口都可用。

Checking whether "sftp" works...
"sftp" failed with exit code 255: 
Connection closed.  
Connection closed


Checking whether "rsync" works...
"rsync" failed with exit code 127: ash: rsync: not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: remote command not found (code 127) at io.c(231) [Receiver=3.2.7]


Deployment to this device will not work out of the box.

设备测试失败。

虽然有stfp和rsync报错,但是没打算用这两个。

show running process也可以显示板子上运行的进程。
open remote shell也可以打开终端并链接。

-------------------------------------------------------

板子上没装gdb server,pc上也没有交叉编译的gdb。正在装。

-------------------------------------------------------

tina sdk里勾选了gdb和gdb server,编译后也生成了对应的程序。不过不知道怎么用,现在qt creator还是提示原来的错误。

-------------------------------------------------------

其实板子上只用gdb server就行了。我之前以为pc上需要用到交叉编译的gdb,其实是不行的,得用pc版的gdb。我尝试用ubuntu自带的gdb,结果版本太高,链接后,出现了个too long的错误。在pc上重新源码编译gdb,让gdb和gdbserver用的是同一份源码,就没那个问题了。
arm板上:gdbserver :1234 ./test
pc端:arm-linux-gdb ./test    注意这个arm-linux-gdb只是个名字,并不表示这是交叉编译出来的gdb。
然后gdb命令行中,target remote 192.168.1.xxx:1234 
开始执行程序后,按c是直接运行程序了。其他还在研究。

而帖子里一开始的报错,和gdb貌似无关。现在还没解决。

最近编辑记录 Gentlepig (2023-08-14 17:17:51)

离线

楼主 #4 2023-08-15 10:31:43

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 想用qtcreator通过ssh调试板子上运行的qt程序,结果总是通不过。

kit构建套件里,设备类型选为 remote linux device的话,如果编译器这里选交叉编译器,则pro文件就不能正常打开,出现qmake_cxx找不到compile_macros定义。
但是,保持设备类型不变,改为pc上用的gcc和gc++,则就能正常打开工程。

于是怀疑是交叉编译器的问题,就又建立个kit,设备类型选为 桌面,仍用交叉编译器,结果pro文件可以正常打开,可以构建生成可执行文件。

------------------------------------------------------------

run选项里有个build device,这里应该选local pc,我之前选的是remote linux devce。改了这里后就没那三个报错了。

我看的是原子的教程,到这里后,该通过ssh和scp命令往板子里拷贝程序,是在qtcreator里的自定义的部署命令里实现的:

ssh -p %{Device:SshPort} %{Device:UserName}@%{Device:H
ostAddress} 'mkdir -p %{CurrentRun:Executable:Path}'

可是qtcreator里没有CurrentRun这个参数,所以又卡到这里了。

------------------------------------------------------------

记录以下qtcreator使用gdb遇到的问题,pc上的gdb和板子上的gdbserver是用同一份原文件编译出来的。结果qtcreator里按f10进入单步调试,提示gdb不支持python脚本。网上搜了说编译时要加--with-python,结果编译时报错,make distclean后,又删了gdb/cache啥的,报错改变了,找不到python,我板子上python默认时python2,改为指向python3后,报错又变了,提示有些python库快要遗弃了,然后又报错找不到python。继续搜,说要安装python-dev。现在用的是python3.10,就安装了python3.10-dev。通过编译了。然后make install。
但是qtcreator里无论用f5还是f10,貌似都不在设置的断点地方停下来...

最近编辑记录 Gentlepig (2023-08-15 17:42:45)

离线

楼主 #5 2023-08-16 17:44:14

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 想用qtcreator通过ssh调试板子上运行的qt程序,结果总是通不过。

想改为rsync方式,结果下载rsync源码下来,configure --host=arm-linux CC=XXX,结果有4个库文件及头文件找不到,ssl,lbmz4等。也不知道该怎么指定,暂时放弃rsync方式。

尝试板子运行gdbserver,pc运行gdb,然后target remote=xxx,可以运行及调试,就是不知道如何设置断点。可以break main,在main函数处设置了断点,但是想在main.cpp其他行设置断点,break main.cpp:43,结果报错,找不到main.cpp。

qtcrator可以通过remote方式连上板子运行程序,就是设置的断点无法停止。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn