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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。3 Z' V: y6 ]8 J

" {: `0 v8 C9 X/ \6 b. I4 D* W- ^那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。  Y3 a  p" `' w. {1 f: i1 e

6 P4 ]- Q3 x. \2 X7 b一、修改工程配置
1 `7 o+ ~9 m  j+ ^( C: e
Step 1:% y5 H: R" s' j: z9 H. ]; D
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
  o% E& m! u/ K, g
/ E. _5 @! h6 t$ L7 J% S, [5 ^$ M
/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)
# D5 c0 L/ F" F! l. x

5 t+ k' o9 ~9 a8 i  ]9 ~
( p. z/ W2 D! J

& b( M$ W& h- L& j: ]; P
[backcolor=rgba(18, 18, 18, 0.5)]​& x6 W0 k# G  T% q) a$ S! b

/ B& E4 A$ b5 C, K: P/ Z

. ~/ o0 A; V1 B! `
9 \, [& x6 c; i8 e- z
( f3 v% L- x4 Y- ?编辑切换为居中. ~/ Q% S% \' b: p' M! k$ u# z2 N

: g  P, S0 D" s. V: U
+ A- @9 i7 q5 k6 l3 B
3 L3 q' t3 N) ]7 g  P' b$ s
% Z% i4 C- x8 Z7 X添加图片注释,不超过 140 字(可选)) M2 u. V/ t8 W3 a- S# B0 X

9 X8 z% M8 X3 e" P+ L
& H% ]9 |+ H. S
3 ]1 |0 T# W* P0 C3 i! i/ d- @

3 K& d0 ]  ?4 |Step 2:
+ W# P/ S, [/ l0 U( u* g7 X$ ?
依次点击【工具→选项→构建和运行】
/ U) i0 t! p- F# }9 i& H

+ K7 K/ Q9 W, Y再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。/ L1 J& _8 J9 L, \

. a& Q& y' o. g: B+ M) L4 o7 }
% I; H( Q) e6 u
/ S; u& [/ {0 Q) M9 k0 r1 O
[backcolor=rgba(18, 18, 18, 0.5)]​2 d  O/ t; ~. A" `, b0 @
( G4 q8 H0 n' l& f  j5 o
* u; n6 S" j6 D/ s7 E# d% A

' r8 x3 c' }% L& _/ o, G# w0 P5 ~) c
编辑切换为居中0 \- K0 K; Y  {$ }
4 I# l; [/ h0 i9 n

; q8 I3 ?( h! }5 @4 z
" T0 D, \/ o  i, @- s+ j8 ~6 C) n$ A( R3 q% s7 @! [
添加图片注释,不超过 140 字(可选)
" `; _2 r# |; ?* l% N2 B  ^3 O" K8 k5 }" f7 d4 s: k! N- W$ {: z

- e: F2 A, F, f9 v& F# Y1 z: k' U  x9 F' ^7 u) p- \) g- k+ K& v
& g: }; c6 @1 D4 T* l
Step 3:, g/ x. H0 x4 V4 ^" l: F7 i) n
点击【工具→选项】
5 q1 I: R( ?& p0 n
  C# j- x6 g/ c, r- B
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。- O( W0 z0 f% M, ?* Z6 h  ~
* E6 E( p; K* a5 \$ C' ]% ?0 F6 K

3 f9 k4 ?3 P3 C. J6 Y1 G) J2 V: y/ V) ~! C# s2 E
. I2 g+ w+ V6 y7 r
[backcolor=rgba(18, 18, 18, 0.5)]​! n% o+ Y9 D# j7 B' b% l
  J" m/ v+ ^6 M
7 o$ L8 q9 [8 Z0 L+ [
. \% a; J& t: V/ i: D2 ~! }
4 ~5 _* H+ l) Y+ q/ t$ A9 {3 f
编辑切换为居中& T$ u# N  K& N  r( y7 [) H2 z
- G! v, ~0 J* M8 g. i9 Y) I

' O, S/ \0 {8 f2 ]6 w7 L" _; V
/ E. _3 l# Z  H- F( A& D
/ G0 j8 G* c) A0 f. l8 _添加图片注释,不超过 140 字(可选)9 l- s& i7 V) H
& D# O" \3 a8 V8 s

$ o/ a1 g0 L! Z7 |& E
. `. b, F: R8 x9 _/ b( t7 q. N2 {6 d

" O* U* R3 G# x. x, n& e- ?5 F7 W- E0 b3 P7 K

4 _) Z% ~7 f! l$ Q9 M# j) @* H

( L, M( X' L4 F4 {. O% ^$ `* l
[backcolor=rgba(18, 18, 18, 0.5)]​/ W7 c  i$ Z3 G+ \6 z2 ~

" ^+ {* ?1 K0 r4 e& o% Q2 ~
% Y/ r' F! U8 e+ f+ V

& d/ w6 k2 }( }0 r1 I' ^
+ _! Z4 X: ^: N) j& B8 l编辑切换为居中1 i4 U! i+ h" _; A) I( E7 X
5 E2 M2 a+ G5 p" Z% {7 }# x

+ G4 J. H2 W( k; l! b, H, o
3 p! L  Z6 t% f
% \4 y7 Q! y) `9 p2 u2 Q添加图片注释,不超过 140 字(可选)
! n$ e& K3 {, D$ S; ]8 L" y/ C7 _
& ~! i% d$ L8 L' h- v1 L7 Y7 X2 P* d- ?
+ }. A$ M1 h7 W$ Y( ?
, k5 e$ t9 P9 m+ T
到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
) q1 P/ U! W/ Y# f. [0 M4 i9 |
+ ^5 P# Q: X* p& S4 e
1.设置账号密码:adduser+账号passwd+密码+ U9 L' L4 W. [( k( b
- J( y% x/ y2 Z* w) P  ~
2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
) S4 o2 i0 l4 D$ ^0 q

; V. S- s/ N- f  n3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务
( z4 r2 }! q8 B* h' }( I
) H4 Y6 U. x) T. b$ P! q
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
5 G2 o) W" r0 i- u
9 o. G& s" l% b
Step 4:
& H/ y& W' d" s$ x1 M9 p
指定目标文件路径
$ C9 G3 s- {# p$ g" Y
, n" N8 q4 w8 `5 T" s3 T$ e
在项目这个地方选择的存放路径要在.pro文件中声明。
3 k; h2 g" \  H0 }5 \, H& ^

9 [) b( s" }8 P# a# T" d$ ?: E% q2 B  ^- R) Z& t
* k+ t# V8 d! T0 C. ^6 m

7 ?, |" f; d; e1 Q/ k. L4 Y% C
[backcolor=rgba(18, 18, 18, 0.5)]​
6 i% G0 m8 y" K! i! M* H/ D* N2 C! n/ @/ }
- d8 B" K0 P. o: A, [) O

, O  Y4 E; u4 F: U( r# W( c8 p& l5 z# h# e3 M
编辑切换为居中
8 ]: q7 e* |' e, c1 ]' M; |) ~% g0 r- ~+ f6 ~: h
5 Y8 L( i4 E2 o  i8 `; N
# O0 `, w- O$ B' ^- L' ?
+ R1 J. O0 l$ l" C
添加图片注释,不超过 140 字(可选)
) T! f, a2 v, r! P8 m# a9 n
7 ^4 F% o1 m: O7 B3 ]5 Z
3 N5 l9 X4 G2 k+ F  z2 [
: \2 N' ?1 Q5 K$ M* J- q; ?

" w( b- [2 ~* \! L' H7 Y- o. K+ X0 R. V3 T
  M4 b- b, {& l5 j7 g

6 t; G6 v; I1 i6 _. g" }% Y
[backcolor=rgba(18, 18, 18, 0.5)]​
; x6 G$ Y. |) u4 x2 g6 N  t, A9 W3 O& [7 k6 A

2 g* w: W; h5 [% v  K8 ~* B: E% H' X3 y7 A- L1 [0 S$ P
0 s! t- J7 r$ c, c
编辑切换为居中
0 a* W4 K# F- r. E6 i% P0 a* G: S: d( a# A9 }# w% H' T" b( X" I
; m' p& j6 p- R  a  x

( s% ^0 b% x  _7 X: c. ?. ?6 K& c0 e6 I4 J
添加图片注释,不超过 140 字(可选)- L" e; D7 ~" j7 c
1 l0 i' J6 u: l# v& H
5 l( ]2 c; I. k4 h
# f/ u- S1 |) P3 l2 g
; q5 d: X: d$ j

6 g% s( R4 V7 S! D0 C) t
" R" ~1 U: ~+ U5 x) y( h

, l  U/ p  Y6 {二、成果展示
; e* ~" P; O7 r+ H3 E
按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。4 k; z4 F! X) ^6 x6 B

+ Q5 X' Y2 i7 L: E9 t' B0 a4 {" |/ D9 C5 t8 t; f! r

* s" I  _& |4 b. s
) K* o$ T* [1 h3 f7 e7 \- o8 ]
[backcolor=rgba(18, 18, 18, 0.5)]​6 t0 `/ \9 o% A: X. P$ r6 C

; |4 S9 M3 F5 S% D# {1 O

* |9 Z  g( d0 r9 }( [* O2 @. [/ y( y. X- F
+ V5 L, C; A. J* Z
编辑切换为居中2 R% g) B* |: _/ @: D! g

+ g  |- K+ H( n3 P( W+ K& _+ d7 v% p) ~9 d0 |8 o, ?! ~

+ P8 G, U1 r2 V% h: B6 z0 G/ }9 r0 i8 A; Q
添加图片注释,不超过 140 字(可选)
. y: [! Z) o5 F" x7 G
: G, \" F% k, T0 w3 H6 E' c; y& U% B8 P" [* B4 D4 v+ r
9 E, A3 B9 h1 d  I

, {' v2 T6 [' {! J1 v屏幕显示:2 r) H; f' z$ g4 [3 o# c. y
$ G+ s( L: F/ Z3 O
: v: G. D. U* u1 Y

' `# L! q5 G/ H9 J' J
; f7 O; e# z! t8 ]
[backcolor=rgba(18, 18, 18, 0.5)]​
- `7 ^" \8 |+ H  X8 o- v. q1 B  U$ M. p4 j6 ~
; n( L' R6 q: d8 b# Q. {+ s
) `* r) I* H4 V) j+ a5 Y

' E+ _& d  D9 Z5 F6 }编辑切换为居中6 A% c% ]7 d' s5 V  D
$ q: z' \3 `1 y" H: {
5 |2 Y) c$ E4 W! M3 O

  X4 @$ B! z7 R+ k# }- i
5 I0 g  a1 C7 d$ X0 j添加图片注释,不超过 140 字(可选)9 ~% w( n# b" Y" S1 \5 P

4 w1 q0 ^+ N( h  @6 h. ~( x3 m" G) x5 V; d  k& h

  ?: j. }0 S8 ?# K: ~; f0 Z
* |2 r0 m- D8 m5 d
模拟研发人员进行增删:
3 c3 Q) P8 F" Q8 M; H( S  F: T9 B

. d, U- ?  n& F( g: K
7 @: m9 |# E& P. o3 D
- k/ J5 m) V( `& ~* f6 d3 @
3 V6 T( G5 R# v5 `, r9 p7 [
[backcolor=rgba(18, 18, 18, 0.5)]​: e) d* u2 ?& a- b. A

" u$ I: A. C4 K- c, C

9 J1 Y) D4 M8 ^: X0 J6 a1 M9 z  Q+ A9 e! P% s$ A

* M: J9 K# x% O4 |2 x) m编辑切换为居中
9 S0 W: y6 M) j: t: ]! Q* P/ }3 R
; @2 ?; p: U, N5 \
% V5 y" E' W/ g& r' u5 L- P
' q/ u+ p; E4 Z" g5 h5 m) e+ S* ]9 C2 ~2 t  M
添加图片注释,不超过 140 字(可选)% y' _* G" l8 h  E5 v( n/ A  S

" C5 r: H& L+ C% h( i/ O7 O+ n) w: x1 I
, y( I; @6 I8 T3 z& R% a

' m6 w3 Z# M2 R1 W9 h/ G: p屏幕显示:
; z' o: p4 a7 c6 E

) }6 j5 j* a7 C2 ]" f" ?6 n( O5 J1 N$ |0 |3 A8 j  Z

0 n& }! v1 |8 M* A0 O, o

% j; [1 C2 [$ h" i; X2 T- d3 _2 ?
[backcolor=rgba(18, 18, 18, 0.5)]​
2 y9 R% T  i$ q! l: f. ^% e1 ?/ t& s" x
% v0 U+ T9 s: L. S3 _( Y& |

" _& x( ]2 G. c' T" {+ c1 `8 F' H" c* h: M9 G4 \
编辑切换为居中
6 j9 J2 K, a0 |; Q! |3 m& ^
/ g  _; m  L' J4 r  L. E( y
3 c7 z) F3 Q- N* w" d, o2 g' q
0 o9 [6 ^5 ~. t) t4 a; F2 P% T; k
添加图片注释,不超过 140 字(可选)
$ `& k$ A8 S7 l$ }" C7 v* ~: @! |0 _
$ v, K( H$ l- j4 ^2 B1 k$ t" @9 V7 }9 D. J
8 W" A$ ~- s2 |, J
( \" a0 I# E1 @4 b
可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。$ @1 M% _# S) v

5 S* M1 y" e8 b+ o: b/ x三、经验分享 1 p# S. r6 P; c1 O/ C* x% u
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。; ^. H% [0 U# R0 n) n. A% K) S
" k2 k) u) K4 {9 \; v' J* ?$ T3 K$ b
1.“连接错误”问题" H; t5 X  ?4 J$ ?6 y

8 n1 p, P/ V# W# V! v) f0 g$ Q: q0 ^: h4 Y

( m9 ^) n+ |1 {# }1 v

- I1 p8 m9 {* n9 l# w7 M7 q
[backcolor=rgba(18, 18, 18, 0.5)]​
; c# B$ e) i. b0 a8 T! `4 L8 f+ }/ W3 U$ b7 }* r5 l
- V( a. U5 F6 |3 s* D" [2 v

5 d2 Q8 I6 l: \) J5 c
" }# W, X1 Q! `9 j4 l7 U5 x1 O# a. w, n编辑
+ Z0 c! S$ |0 J1 ]* ^$ z) L! e% N. _; W& }- u4 q* x

5 O1 h* z3 V. k. e2 K- @4 ]" i1 N! z  R+ H; G
6 N% u3 c" H3 V! _9 t% o3 T9 C. X
添加图片注释,不超过 140 字(可选)/ ^6 w( z/ _2 _& h; }* B

' I3 F. z# m# T  v/ i; o5 g/ W$ y& s3 X! B- ]3 v
: U- ~9 R! \# m2 [
0 @% o) I' e) R0 s6 L! _
2.“部署失败”问题) a7 |* f% |4 K8 b. K$ B# m6 ?$ @2 g( L

% [% y5 T5 C  ~" y4 m5 |( `$ V$ y4 A+ M$ o# h) i4 k; F( x6 N

8 ]+ n# }/ J0 [4 k
) m, S; D( p7 g' W! p& E
[backcolor=rgba(18, 18, 18, 0.5)]​- z7 v8 C$ H9 [" Y

- b- W, @* c$ [5 m* E- D2 z

. v4 p5 J, ]& t+ N% n5 E% Z/ v5 Y8 M2 ]
$ X# e: x" f& E) g& \& n
编辑切换为居中; g2 X" Y8 m' X, h
% ?1 {1 y7 H' D2 ^: V8 z2 F
; S' p3 i$ z5 L

& o0 E- N0 v7 \" n3 P# i6 P' N. V9 G9 Z" x8 b8 y0 k7 Z, o7 b
添加图片注释,不超过 140 字(可选)
9 J) d& g  {* ]7 Z0 I  ]* h+ ~# O& ?* r3 m8 E
( [: b2 v6 Y& A5 _
: j( I9 H6 k1 ^, Y
8 u. i4 j; s: \2 T  ?+ a2 K4 N' k% J, v
出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
% X0 o$ a  v: u1 K) ^

3 Z0 A' h; ^6 z( j# M2 B7 }2 @: b8 I2 |1 ?, s
- F* [9 W2 R0 D- r( o8 r

0 D( _! L) E* S) Z3 \0 H* l4 o
[backcolor=rgba(18, 18, 18, 0.5)]​
- x) n% _; Y5 y; C- b1 K3 a$ u
7 N' G& V% a; E9 l

  n* L! |+ {* g( s  e, U! ?8 a* z* C. ~! f& r9 i
1 B. O. f3 A* y
编辑切换为居中7 P8 L) E$ P# |( L: r

* b9 b( H, e7 T/ j2 F$ K0 ]8 C+ u( Z
' V; N: I" j, d% x  w5 ~
3 _! i" E6 b; M- I5 z
添加图片注释,不超过 140 字(可选)
; R* ~- a6 U  J' N6 g0 P! G5 ^0 g; u% x& i6 Z+ ]( b  ?

' r) \: l; Z2 E# ~; Q. d
/ E4 ^1 s% m. Z& J
6 V2 q/ Z" \9 z  r% h
四、总结
# q$ y% [6 n" f% a4 @/ N
9 a6 |* N3 T& q. _0 ]" n4 V
' T& q! N; M! t" M2 b

- k7 n/ Y3 O# Q( C; J3 `

- S0 M6 y8 J  S8 A! y3 C. y
& ]1 g. |/ z# ?8 q
2 B9 D* \" a) ^6 x0 Z

! @6 a3 L" C' M6 U1 t; f) K" f总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。
0 w& ~0 D- {% g( t2 R1 {

( a# k: W0 ^* U) O( c
' O4 }( f* R+ D; K3 o. n
/ ?/ L7 F7 ^, n" A$ E
- \% @2 O% {4 l/ U2 a
以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
+ _" m) ]& d) X" w; W# w

6 ?  C1 M2 x8 A9 ?9 b0 W% l8 G
* f$ N  i5 J. s! _0 w: E; r
  • TA的每日心情
    慵懒
    2022-1-21 15:20
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 20:57 , Processed in 0.203125 second(s), 24 queries , Gzip On.

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

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

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