找回密码
 注册
关于网站域名变更的通知
查看: 354|回复: 1
打印 上一主题 下一主题

一键运行实时的修改,让Qt远程调试更简单

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-9-30 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
" ]# }# `  c. S) Z9 s' f
+ X7 G' W- w3 Q! O# A' G# s
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。( ~' A3 a4 N/ A8 c' N

% R. f4 E! k% i. k! Y一、修改工程配置* e% Z( N+ g) ^- b1 X7 g& \: j
Step 1:
) A4 @  ^+ F9 s4 `, a7 _. A
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
2 a4 A! P4 J3 f5 }# Y6 W

) C1 E' A8 ^9 j7 |6 i
/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)
- Q$ J3 q( \9 K' K) o: L
$ ~8 k2 r5 `" g4 V0 b9 s6 z
" A5 v# I4 Y# P% [% t5 @
+ P; i) z% o( l. C, P: B
[backcolor=rgba(18, 18, 18, 0.5)]​2 }) I9 h5 b& `( S0 w) Y
6 ^2 f0 p1 i; u0 P6 F; g  I) F4 W
4 q% P- R: T# Z) X
4 G+ X) k/ E) L! z) t

7 A+ Q1 ]; P4 m编辑切换为居中+ [0 n" Y! O* ^- k8 v

9 d6 _) y8 y3 k; g/ J- W! U: S. B! ^( R2 p

- Z: ?8 ~- u9 Z, i# q
& l9 k* Q1 O' C$ x6 N添加图片注释,不超过 140 字(可选)
, ?3 c+ b7 ~5 y, z  U( U/ d$ p5 p* X: G7 o  z, N9 x
  S7 ]' W1 H1 M5 @/ Z) [
6 m3 p5 \- ~- B5 Y
) L; \$ y6 y; t( ?( N( {4 `& |# a
Step 2:
) ?; u- m) I8 }  i9 m
依次点击【工具→选项→构建和运行】
$ D! b& `* l# A, T; m1 M9 B

& X0 y+ a% H4 O" z5 E再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。- j; b4 F5 F) G: S7 D+ O( ~

" Q- g9 J  d: ~/ g5 @8 u2 R) r* z& M: K$ X0 J$ H8 a: R3 {2 B

2 v" u  w; E; L3 X

9 [7 p/ f2 I0 L9 D# c" d8 o. y
[backcolor=rgba(18, 18, 18, 0.5)]​/ a5 `. N1 ^& J
3 g# E* q4 D/ m/ E2 |7 h/ L6 [: f# q

+ L9 T+ D: a4 t; f% a4 V- k- k. F9 z1 A& y  P' e9 ]4 k# L
6 y1 n2 y, @' _
编辑切换为居中
* \: A' i) @( G* W
, _; h; ]/ T7 G" W& K3 e
+ H& y4 e# m1 [  C' ^" v  r3 U& a9 r- M9 N4 s4 _( l8 f
! b( [. ~' {$ d' p) H' N7 |! z8 [
添加图片注释,不超过 140 字(可选), }/ g' y# t; l

" v7 i- M  P% Q3 Y" \; E) _/ Q/ n7 l% g

6 _7 j& O& g; h" p  M; J0 C
0 C! L. E, a: C) |! `- d% o3 ~
Step 3:
5 Z* ^; T$ |( O4 p
点击【工具→选项】
. m/ p8 D) x6 M. r2 n7 J# j

& d4 T0 g' N" i5 O在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
4 O0 M' R* ~& ]

0 b' X$ r* e) z" G& n/ u8 u9 y
5 ^( P6 M% R; W& I! M3 K
) w) ?; ]) S  P  @
9 o4 H0 a" u% C# f0 _0 O8 I! E
[backcolor=rgba(18, 18, 18, 0.5)]​+ I1 Y# x) D" N) I

/ F& x: U1 p$ `/ y1 a" Z; q

" l) h) n2 v$ ~8 G
; `2 ~8 n2 }' a4 `. D: C4 U) x. X) p* P" D8 X
编辑切换为居中
6 H  e9 N* n1 U7 B# h; v* |- h3 O$ L
2 J" v7 T0 z  v/ N9 R
3 m- F. L; b4 u( E& W. G! G1 q, f

. E6 W8 ~+ G; q$ I, Z添加图片注释,不超过 140 字(可选)
3 L( U- x. \. w& ]* G( L  a* c9 X5 f/ `, f0 x
0 i) g" N0 R1 ~7 L0 z' O0 n

- Z5 D; ^/ t5 X3 x2 d
- P4 U# f$ ?3 I  J
, U7 w( l1 U2 y3 ]8 R# `
8 s* _3 ], N; `; p

$ \1 A# A  |- N# r0 k
[backcolor=rgba(18, 18, 18, 0.5)]​. U  j$ D$ X( [5 B, s% Q7 y
2 J! R! v5 _( F; S8 s" q) n/ L
/ h6 B3 A9 Z% i; k- v
! i$ a4 _" F; U% Z# h+ ^# A
" J* x# u; g( N0 S2 b* D" I# R
编辑切换为居中' A$ H( J1 n  ?
+ e6 G- Q. R* h, C; E0 ]
; j" ^, ?$ T8 }/ X2 b: K

3 z/ C' p# A+ }3 J% |0 h  l) i! f8 b$ Y: a8 y3 w
添加图片注释,不超过 140 字(可选)+ v; V' a. l" o1 U$ W$ p
8 f9 Q* E9 a4 R  d
- F3 }' ^# l2 @+ f# A8 B

* e+ I! T4 k7 S" v9 k

/ o& ^( ^: V" {! p( \2 x) G到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
  P7 v5 [. x# V- u0 u+ r' L8 W  b. R

6 z# p& w0 m9 Q3 @" W7 t( `1.设置账号密码:adduser+账号passwd+密码
* O1 H5 A0 }- h7 j' G* H7 g) x
' A  i. c8 P7 D3 a: r( T
2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
0 j& l" s' O0 O1 W6 E% I# x

. Z+ ?# v/ y- Q& B" E3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务2 b9 V: U" }$ @, H; D# X

/ w( Q! n4 _. X4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
1 n4 k  R! Z3 p9 Z# J" Y) F" ^; b5 S

! p; M' S& m; V; ^& M' T% w( M' bStep 4:. [, e+ l! @& e
指定目标文件路径, c7 H; m; R7 j9 e' w6 ]
& a! Q; ?: n2 J9 U
在项目这个地方选择的存放路径要在.pro文件中声明。  F5 p1 ?. k) T/ `; }; S- \* B8 Q
$ d/ R9 Q& A7 g" L1 M+ c
; r& l) B: c/ a/ V, g* D8 l
* S% A6 n; M" ?7 S
& Q. I  o. C8 ?& P8 G2 A
[backcolor=rgba(18, 18, 18, 0.5)]​! [# j& f/ y6 Z6 G; O# m6 \
" U8 T( w- ^. H' s$ `8 p  y" ]. o

) B3 |! P2 z% r" [& q& Y/ H7 B  c' D# G7 I

' Y4 ~! A4 E* v7 v3 m编辑切换为居中
7 M3 w/ _/ {5 m% ^( B# h3 H; _$ D4 X& g& p1 X
% G7 c& g; i: E/ k2 b& |# L! ]( d- ]

% v* `! L2 ^( x# X6 s7 |  g9 o$ O9 y, ^) w. |  \
添加图片注释,不超过 140 字(可选). J' f9 v4 X7 C5 A, `
7 [/ v, [- x2 X# d- S
) v* I; [' @8 y0 U
' e$ N5 {5 [; l) F) K

+ ~+ W8 ?) v# q+ L" Y- y) B! m
2 R8 r6 ^8 [$ B3 w# Q' Y) n* ?' Y  m# F5 y

3 P4 ~: Z# z' j# {+ N, [) o  |
[backcolor=rgba(18, 18, 18, 0.5)]​! s) ^) \3 T6 r

/ ^4 i3 ]  y- o: K) c

9 [- Q. s% t6 y: n! Q4 S2 C
2 ]: O/ j2 G& E% j) I# H" t0 Q* G
编辑切换为居中
) S  V/ F! E: m( C. N( n3 s' Z6 I  O4 }3 F, N
% \! F! r& [8 m1 w2 v, {; P
) B% T4 C+ s* ~- R, H6 g# [1 M
2 v! W$ ~! P% {
添加图片注释,不超过 140 字(可选), j7 l& i/ @2 v; F
5 [; D2 I# w; F+ j' ?
7 J8 D7 ~3 A! d$ m

. Q$ v9 D+ _7 N9 K8 `; b

0 d6 ~$ _8 X7 l8 _* }
3 M2 Q6 l3 K5 D  j1 [5 b  S$ p' ]* e8 p- A  _) C
( q# w3 s0 w9 M3 F  H; W" m
二、成果展示
7 b2 i2 u2 J. R( Q* d6 W7 z
按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。
" ?4 }. a5 d! R& N$ h3 b  s2 r
$ a, W; \) [3 z- U4 }
( [5 F) x6 x% v6 S- ]# O

, q0 p3 S5 t" o: k

9 {- ^/ ]! |9 d' S: h- C
[backcolor=rgba(18, 18, 18, 0.5)]​( H6 J) m( w' @; X+ Y, f1 Z
0 H$ S' b- }" b/ J. A

+ ], e2 C- {4 `! v5 Q% y
" w+ p. C) Y( i- d' {
3 ~. F# {& U' A, {9 z; c  W" E( e编辑切换为居中
5 e/ Y; y6 M! s) b. x2 F2 w7 O, \
: ?  ^4 M& v+ \" ~' m3 W
9 D% c) n3 H: m  Z/ w3 s6 |- e4 o* l* L, g9 g& g5 g' S
! F* q; d8 l+ K3 ^
添加图片注释,不超过 140 字(可选)
( A2 q. l$ m) ^& t
" @- h, m4 {4 D/ |0 e
) e& r  J) Q. E( W3 M( i0 h) i4 Q: d& m

9 a$ G/ Z- @/ @9 Q8 B4 S屏幕显示:4 X# V! b/ @9 ^) ~$ M" ~
& o% w6 O' Q- |+ G

; L( T2 w1 |3 U# R& U: n$ u; J$ _9 z% ^; @$ }# s' I
$ L& x0 o+ B4 n; K: w1 ]8 e
[backcolor=rgba(18, 18, 18, 0.5)]​' c; j  d  s) W* K) N6 ]

1 N6 ~# f/ F3 {+ w

  Y+ d% q5 I. ?8 X- v) E, O; Z) |. l
4 l4 b. m+ v2 R6 f
编辑切换为居中
( [9 T4 u: W( w9 i" m9 T  K; G# Q3 d( q" m- Y7 h

  q/ }2 d0 |! p% u
( @+ }- z, s/ e2 ]6 x, c8 A. e+ d% Z. m. r; I% [
添加图片注释,不超过 140 字(可选)& C$ f9 f1 r9 u0 Z# z
4 p, L9 Z1 l# W% W* v
! _) M9 a. @; _" j% p6 q
: z' ^( i: Z9 Y3 ~9 j. |1 P
  |6 D  z" n2 u) G, L' u1 V
模拟研发人员进行增删:( Y' O* p6 M9 ?, P

9 F+ M0 \1 R+ U) q3 J. w# ~
* g+ \8 L4 L0 D: q. Q
9 M+ S1 I7 Z" j! Y" W
3 z; [0 w" m. k% Z- @# E
[backcolor=rgba(18, 18, 18, 0.5)]​
6 @- A. x* V4 W& S# b
; P- @1 r. ?( {  z
4 @6 R9 \* g8 ^! c" v
# a, W1 t- q! ?/ @6 B

1 C* |; Y. n% Q2 J( r, N编辑切换为居中
  q9 h1 ^5 I0 H5 b4 C5 ~
3 {7 O: m2 `, `; e# m$ {
$ U+ P+ q0 S1 P, f9 W- A9 z
* H6 m% v' x* ~! I) V! m+ C' Y( _- U6 [# y6 R; h
添加图片注释,不超过 140 字(可选)
& ^8 F, J8 D4 x. G$ O
( _; e1 O' i0 g: y
, O4 W7 t+ q/ W1 W2 d" H+ n) @) T* x1 n& ^
6 ~/ u5 t, e6 x/ Y
屏幕显示:/ e% @4 ~8 t3 W+ N2 Q

7 x$ t5 w% {0 |
, c: ?! i8 o/ v4 o7 O" a6 D  N5 P: z) Z! b8 g8 [& F! N
9 G/ f+ m4 H( @! O
[backcolor=rgba(18, 18, 18, 0.5)]​1 G9 B9 x, o; D6 ]

& K1 h5 N1 A) h6 q: w8 e, `. g/ ?
( M2 s; U/ M9 d0 E+ S" c

! l9 p. {6 P$ {' K3 Z- E3 a2 e. n( O2 P
编辑切换为居中: F0 z+ `  A( Z5 G, R

6 h1 @% E1 h( W" _
8 f1 k! P8 G$ ^2 O& d
, j3 m& X, U8 z9 f+ M: @; x) T8 [$ `. g6 c. F+ O9 a
添加图片注释,不超过 140 字(可选)3 ?9 C* `4 s) A7 v/ B- {

9 B  u# G; T# p& U0 v& A, n. n) C1 b7 h* z0 x8 @
) K, Z( A& K+ ]7 H

+ Q/ h* v* z9 e( E可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。' t  U& f9 B: k8 h* D

! R3 B% P5 }0 i0 w5 W4 N三、经验分享
' U8 z2 Q% W& K+ m9 `6 k
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。( P, q  x! H2 R' O# a

8 P, t% J2 r, Y& ?* ]) a% H( p1.“连接错误”问题
) V% V, S+ F0 `+ Z

: x/ H0 U: v0 }$ Y: _/ V/ ^3 L3 E! {# Z( }) [! b! O  _  B4 _: f

, q: }# a. x5 x6 ]7 P
! D* Z5 l# Z/ K9 b: c
[backcolor=rgba(18, 18, 18, 0.5)]​
" b3 Z) y4 r1 N8 e9 T( F# E5 r
% b' {+ h4 D$ y  }0 i) [

( ^2 W& G: o- z; f5 I. B
8 V" L" i9 l" ?1 N
  F0 ~+ C( M* b- E3 Z  v编辑# r& H. U- y$ T* e9 J" e: N% Z$ @5 |. D

. ~9 o7 W! J) l% p8 {% h& a/ Z# O+ C( q
" f0 ~+ N: D% g

7 S# g" }- ^. E! r, i6 l添加图片注释,不超过 140 字(可选). {$ d% K5 w% d2 f$ Q( }) F, F- U

* `9 I5 k  O1 m5 Y9 w6 b
, ]4 {. g/ C# y: w+ T) g5 L0 G6 ~; A( _$ N  B' [
) P+ `) ?2 J0 c9 \
2.“部署失败”问题' c7 \5 l3 K5 \9 g! C# @

+ I, o& M* w7 E6 [; i5 Q5 _' E' J' Z0 O1 C2 ^1 Q- L+ t1 Z2 ~

4 ^  K7 Q2 |2 }& N* a8 T

, @! y- m% }& F6 e
[backcolor=rgba(18, 18, 18, 0.5)]​. v! J2 U/ F6 f- H2 L

' s; f1 F: n4 j: D& F( C4 e6 f3 B. J

- B& N" K0 ~7 y$ T' T8 F# ?- b( t& ~0 L" u  M+ j

/ @% Y# D- ^2 V3 {$ y编辑切换为居中
5 K3 U* s4 ~  o# F7 K# X* \, G- ]+ [8 K4 p% S# B

# j7 d2 N$ c6 }, H1 R8 [; P) I7 B& k) {. Q$ u: O- J( Q

- ^- X5 b; K4 H添加图片注释,不超过 140 字(可选)
/ e! _/ ~& E1 L* Z; b- O
& R2 n8 }8 u) u5 g
$ y9 W8 L7 T) ]5 n+ P- I# w
  d; P; h5 o6 c1 `  j5 w  \

2 m! ?( p/ l" ]/ U$ V8 f8 J2 R出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
; X( @" B& n# h% K
4 M9 P" J3 M: U, u8 k' f4 K

& ?/ s3 k7 b* p5 ?( a' w: p
9 B( @9 A. P+ f  |- m0 Y( h

* g8 u+ u/ v# v4 {9 ^$ F- L
[backcolor=rgba(18, 18, 18, 0.5)]​
* B3 ]0 D% a, M- G" b+ Y5 t$ k) f  Z1 r  l. H

2 ~. u, c: U' _
9 L' g' f/ r( s; Z" m! F8 b0 s  J6 K6 x1 B6 \- _2 U
编辑切换为居中  C# p9 {2 j8 N( @5 z
) M8 f! p0 \% m- ?/ ?7 U* J

9 [5 K/ S) y3 F9 X$ G) J/ _7 p! }+ J* S; p
+ A4 b, t  a) w7 b, P) Y" p
添加图片注释,不超过 140 字(可选)3 O3 t# O4 G, r: S, S
9 D! H2 v& l- q$ Y2 @

6 @  o1 Q8 K  k/ k0 H! r
& @7 g8 L4 H$ r" V+ g* O
% m. w: G! H9 M/ c9 B9 j' e
四、总结/ i& g; U5 a1 T- ^% w; }

! h5 ~3 D' X+ j, M" s/ L% x
6 O/ r5 H  E/ |/ C: e1 E6 N% U* J
5 [5 k8 w9 d9 \, [- W

' @+ O' Q+ q+ D2 ]* L) V
' l) Q  N) {. Y9 W2 ?* U4 ?2 Y  s; g( T6 ?$ C
: H9 ~# ?9 n7 S( q( B
总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。9 L6 C3 R# W' i# \# W9 m* h

5 A4 c2 V# _* P, {
3 a' ^4 d0 U' O" S& x5 [9 r' ^: Q

; G1 N1 S4 S$ c+ s% ^; M( [: ]& N* H以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
! E# @3 [! F8 I1 b  r5 B+ q

7 H* M( w& X* Z! {: m' A+ C! K5 }0 K! k) g/ j% t9 _
  • TA的每日心情
    慵懒
    2022-1-21 15:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    推荐
    发表于 2022-9-30 17:37 | 只看该作者
    用这种命令进行远程调试,一个命令符用一行打完不要换行否则就会失效
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-9-11 05:10 , Processed in 0.109375 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表