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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
1 X' _: d$ S8 M5 o4 n; i- k

, X& ?. W; u; x! G& b4 |那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。4 \8 I0 a1 Y( S

, T* |8 A& F* W: l一、修改工程配置
/ l2 S  [8 V+ C  \0 u
Step 1:! m; C( O/ B; ^6 f+ G# j& f
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
) m4 _& A* P2 b; U( l' e9 x! _
# v: b- n' z) J. x8 w
/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)  K4 ~, ?  E: k8 N% b
6 l, p5 e. s% p$ R

9 p8 R9 o6 c) i# ^

7 H5 l. I4 d/ S# q4 A8 ?
[backcolor=rgba(18, 18, 18, 0.5)]​7 p0 f2 A4 P$ o6 F/ g* V( c5 f
5 X' b+ P2 D+ T- J1 M+ w' m8 w* t% U$ }
9 ~0 ^7 A2 Z' Z* n  P" E" A

) j8 m, D3 e  O& W/ t' T" q, A2 t$ _9 H8 ^' s* d6 @
编辑切换为居中
2 H6 y" l2 T9 x( O3 D6 [: j0 ~' E" t, o3 f3 N! d8 e+ i

, H2 }/ ^, l) o; @
# J+ B9 l" h) l
, n* u' f  K9 Z! [/ _, t添加图片注释,不超过 140 字(可选)
. x% j* b3 z( A5 O# R* p2 ~( G2 E  P, e8 `1 {/ G

0 n0 K* P/ M3 ^9 Y5 n( D0 z. d5 M7 J' L! r4 B

( C# ?/ h' B9 k' wStep 2:
2 G- O8 C# k' q, P! V2 H
依次点击【工具→选项→构建和运行】
8 j/ K  P3 n4 Q( ^  H9 Q. A
) W4 A. J* G- A0 O
再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。
/ ?  p6 R5 j" ]9 W( U. _+ r

: D! K- b$ c3 k- f) u/ |) j6 ]3 y; W, S! i3 Z1 T3 c( L. j; p- D

* U  o( C3 R+ K9 Q- z

0 m7 h0 R5 R- D0 k
[backcolor=rgba(18, 18, 18, 0.5)]​
8 D0 K+ \( a0 ?- W) K+ l* Z& x% H, V2 e8 D- s5 g/ P4 D& b
6 ^  H* h' ~7 X4 g

+ i1 a& S  Q/ K/ ]6 j
5 L' S9 a% B0 h; S- e! Y编辑切换为居中( o4 k9 R+ F+ V# I: o- u
5 z7 T" T( D+ f. t

5 L. D; b! o/ m
# Y4 X; U# F! Z; R
0 j3 G! F- ~# k* t( y: m6 A添加图片注释,不超过 140 字(可选)
+ c' d2 J$ Q+ I# N! l$ W& v, D3 a( o4 t1 R6 R( \& R9 w# k& g( ^

. G% P  C; V, W& C: h+ l1 j: Y; t% o# n- B+ ~% E* Q1 b- N
3 G0 D- b+ i5 T- P" p$ {' ^
Step 3:
, w6 c! ~# C& S# i7 K  Q9 Q/ N  r
点击【工具→选项】
+ r: G% Q/ M# ~1 D( K" z
# y$ ]( N) ^! s, L( u- T. |
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。7 P( [0 g6 g# |6 h6 h# I

  e+ h) M, T& T+ H
1 l+ }' \+ \( r% d. S: u5 D* p5 z9 z7 n0 |8 D# J+ M

% {- o+ K/ k( Z+ ^
[backcolor=rgba(18, 18, 18, 0.5)]​
) v0 ]- Z! L, Z- B  G7 y* d: E( i/ ^6 e' ]5 J2 v3 h1 S  h

% |. `5 F7 K* r" ^- X) @) E6 X. m9 p- y3 h9 z1 F0 X) `. d

# f+ p3 k5 q+ F1 l3 m$ O, r编辑切换为居中( Y1 ]! F$ f6 L. T( P; m# b5 Z; A0 }

4 J& d& W1 P: ^" M9 u8 L, ~! d; F& o% x& |) g8 ~- d! \6 ]# Z

# ?. P/ h# Z6 J
* _4 u9 k- }; R$ L. J0 w添加图片注释,不超过 140 字(可选)
7 R& n9 B3 n5 X
4 B3 w* Q' f) j
8 [- i2 V1 C  ~6 m( l# _* R" @8 N5 X$ ~

' O; R, N! f/ e7 z
2 I/ s/ q4 s& n
2 u5 g; S( T) I6 K
1 M6 w3 m- ]0 w; M) u; Q1 i; j
[backcolor=rgba(18, 18, 18, 0.5)]​+ u8 e2 q9 i, j% ~: Q( q+ |
) k6 t# ^. F: u6 z
# ?! U0 c, S, O9 [' P+ F/ H
5 u' D! E) V$ V' \5 {7 {% e3 L
7 T* R' z0 W9 o- Z% o! b2 e1 c" @6 b
编辑切换为居中% y( w/ x% d" z2 I4 H% c
, y/ h/ I* o3 h% @0 g4 [

. X; l! _' B9 h; ?5 \5 O5 U- j
" i8 l3 p) `* H4 _& @0 ]. |2 t; h3 _9 @) c
添加图片注释,不超过 140 字(可选)
! o6 c$ c+ h5 C/ D
0 I0 h3 |0 [5 V& z9 B& R* q* s* O0 w' k* a
5 t& x' R3 {& c* I- g* J6 J1 k
& J" [* N* u+ X  |* F3 e0 y
到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
. ?& K5 p1 X8 P  a) Y* S: T& m
5 y# r! y: v5 [: r1 U+ W
1.设置账号密码:adduser+账号passwd+密码' |% N+ X7 t$ P5 l& F& C* G

# ^" e5 j+ U& x9 \: j2 g( ]2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
5 I8 B! W- d& w: t: ?

" E/ Q- m# Z9 d* ]5 x* T3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务
2 v" M* g7 f# _

! \! `( P. J! X- v4 }4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
5 S  ?1 d- x% r

6 A7 M& I) p8 M  L+ ]Step 4:5 F' l, o) Z3 z4 ?- H) A
指定目标文件路径  Q) s8 T7 `2 ^$ U, h

1 |* ~1 d& D% \. m) i9 ?. V在项目这个地方选择的存放路径要在.pro文件中声明。
2 G7 h' S% |! y6 L0 d$ s* I% f
: g* T# s0 T) D8 i3 q) E" H2 y) ^) B

! B3 C/ a0 v* `4 N8 L2 g( E6 `1 u+ H2 N! `  q& C5 v  K
: n/ L3 l* B! G8 d
[backcolor=rgba(18, 18, 18, 0.5)]​- ~) g' Z8 `  d$ t7 V  Z8 n' U
4 w; R; t6 l" z

# u8 n$ T& E) n- ^) A3 |- X1 x/ J( k' n; ^7 N5 B: L

9 X7 i" z; t3 ?# o( [4 l编辑切换为居中# `3 v  {  s2 O; h0 D
( F; d8 i% B1 T3 b9 ]( X+ _* H% C
- V2 P) X4 p6 X3 n' A% c

) e9 \; J+ X. p- c8 N3 W4 Q5 K: v
* v0 o  ^! H: R添加图片注释,不超过 140 字(可选)
1 \; \' {- W1 A1 \8 D0 Y" p+ `: ]6 v2 X5 l3 B2 q
2 W( v! H! `8 }3 J/ U  t
" a9 t- ?, E$ c( M9 f

: y) U7 K, N. N9 `8 V9 w  P7 \6 g
. p5 o- {4 _, S+ C( K5 |) v" D6 y; ]9 B' o( t8 `' Q  o# t* d

. J. Z. }0 {% j2 k' _' e5 P
[backcolor=rgba(18, 18, 18, 0.5)]​
( t  U, T2 C3 s2 y. ]. Y* Y% N3 Q: d- E$ X0 e7 c, i- X! D
/ Q- M' ^8 ~" i( O: f: @/ s' G. Q
: a; E" S3 K2 i+ ]: `/ W
  C  c, @: m3 c8 k2 E
编辑切换为居中+ h) U: j2 Y) x5 }7 w/ L! ]

* N& Y1 s2 t8 w. D  i. J6 p9 z& P9 ^

( @8 n) b. p' C  t  A8 F; f. b
/ Y# j- C& A: f添加图片注释,不超过 140 字(可选)
7 X! }  }5 G/ _) t# l
/ g8 p! s! X; C, D+ k9 c
1 M4 n7 P$ w- u
9 O1 y; P3 I8 M5 @' e. T6 \. v
/ A1 v  r, L' ]+ B8 x

' G9 [7 z9 B& F% p: q" U
8 d7 }4 W  L, H/ K: ?
" G9 E2 Z5 @0 ^0 {! E; K
二、成果展示
# f6 `1 {* K- H& {
按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。, |2 w8 J) \$ l; n: e/ n

$ ?  c4 A. [. x  s7 V; s  M8 F6 U0 e8 t! i, d1 }0 s8 d

( ~- u. w' [7 M6 W  _

3 t, E& s  ~  A$ b
[backcolor=rgba(18, 18, 18, 0.5)]​3 e7 x7 A8 I% M, b3 ?

/ Y" g  _0 c7 t( w/ ~: N: U  X. @
+ x, j" h+ K+ k) P2 ]/ f3 T: l* f

5 [/ }! n+ k6 D! ^' A& h1 w* W( B# J5 C7 I- F+ r
编辑切换为居中% K* t# ~- G3 B0 a4 J. I

4 `6 g. S$ x( y3 ^0 i8 M
. u" u. D3 u' z8 \$ [! D. ^, H: D4 g; A* l

# p/ V4 f: q0 k: g0 r) j9 P. j, |添加图片注释,不超过 140 字(可选)
5 B& B9 R1 x6 O/ w* N+ f
  m7 ~! b, O5 X' w- L* c( ~$ h5 M2 H: o6 p5 e. `
* E+ D$ n, C8 C5 S# A

1 g6 ]+ r5 n7 u$ f5 Z/ n屏幕显示:$ R  n! c% X  y3 w% f6 v
, C3 G! n+ C; S7 `$ W

2 m* s3 y8 A& M* E8 m4 n. e) ^, m2 G# c

6 b/ l& ]6 N! M; i. Y8 Q* L  \9 N
[backcolor=rgba(18, 18, 18, 0.5)]​
6 s8 ^( ?0 |; a) T
* t7 e8 l3 R" }' D+ b) c& p
* D& s1 y2 c  m# x( [% y  x* j  b
7 a( J+ j4 [  [# ^

9 @! v- z1 O, e7 N  _% n9 j# Q编辑切换为居中' J5 Y) w, ^1 g4 ?9 K

' W9 F! _- c6 t' B* Y# x- e
, O  t  j! b$ T4 p$ S8 F, l3 M% B; K- t6 U

0 ^4 |( @) s# A  L( T. w添加图片注释,不超过 140 字(可选)0 K; c) w1 P1 P. s; b8 u

, k) I2 k, ^( N; ~# f
0 V5 H0 b, o8 L! q& \+ j6 y4 @( Q9 f4 E! Y' W8 @- |4 T
0 f8 @* V# H5 k* F2 v2 N" i; H8 f5 w
模拟研发人员进行增删:
2 q) e3 x0 `& W! x) D: {0 [  `

( g# c' T3 ^  V8 V0 @) _
3 |% B$ r: l1 g6 p4 X% c1 v/ I5 y* O
, }; \8 x" D$ a5 F6 |: q: t
[backcolor=rgba(18, 18, 18, 0.5)]​
* R" I0 m0 M/ }+ r8 }* [- [6 d- T& X7 N# L9 \* K& o

2 ~6 L1 u. q9 y
( E6 j; x# K3 o0 K# N+ O/ v/ e! I( I) j, _7 s  H
编辑切换为居中
+ F1 d8 d4 u1 R. s' N8 g' c% O2 H  V* A' u5 q4 j1 w
) I3 h0 D8 u6 a! ]4 P$ a
+ X6 O: j9 b; b& m1 S

  K; j# ], \3 Y( E# p$ E添加图片注释,不超过 140 字(可选)
7 W5 L( F; u" @6 J/ Q
! E3 i( L- ]# x& G+ D4 J  }) z) P; |$ j, Y/ v
/ w7 S) z5 b4 Y% T0 `7 I8 N
) f, z, w+ f7 N
屏幕显示:, I0 [% a* n6 _. h/ j1 \. b5 l

; ^0 D( q4 H! T5 a7 Z: U) O
2 e: W( h$ n# x- P7 e' F% \0 [3 L. F* s( V! F3 `
2 n# I* k, b1 k, z" t
[backcolor=rgba(18, 18, 18, 0.5)]​8 o# L! Z/ T4 a6 }

( V# P. S9 \( R) L% ?
5 L/ T& o4 q; L& d2 g  n
6 t3 y2 ?: D$ a* J3 Z  e% y0 ]8 \
* a$ l$ s+ R- _) N3 N* ~1 |
编辑切换为居中
& ~" ~6 J6 X, d) M: w! F/ V; Z+ }
9 b4 ^+ U+ w; F& y; W4 i
# e# r* k2 ?* U! C" D
. u5 F. e. e. `5 X
( u  y( f3 k- `4 Z添加图片注释,不超过 140 字(可选)9 ]* x; D5 _8 K4 ?6 k. ]$ j! ~
+ k6 w# r$ @+ k4 P2 E
1 Y: F3 p/ @2 x$ U$ O% Q0 Q5 L% o& Q: @( `
5 Z" R# b- d: ]0 g8 c$ d
+ e) z, [- ], M; @0 z
可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。! w0 n+ F  f* ^: `4 z! d

) J7 g2 O5 K: X7 H三、经验分享 ; k/ x5 Z7 }2 K& S' H
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。
$ {+ @4 \1 I5 M

2 D  J- i# p: _. l' [6 d- V1.“连接错误”问题( b& t8 n& r3 G  s4 `6 H

+ C# W7 e4 M% x! h4 V% O1 C- \- q# O; @- C: a0 b) n

: R+ r) W; g6 Z' n- ]. Y

" |' O8 s( \; a7 [" f7 C
[backcolor=rgba(18, 18, 18, 0.5)]​
9 n! y& K/ d7 x  v! n; l. N' ^7 G) F2 `5 J& t

- ]' C; _( Q, G$ D# o0 @: ^) ]) N- H8 O9 Q5 `! s" s

7 J2 h* ]4 F7 [编辑# v0 `4 x8 D1 r' j) D; {1 C

' A) r' y+ r/ P
+ t( z9 u0 d( c. d
) _: N) Y' @; {4 t2 H8 V& N  j7 B, b- N  y2 P5 T
添加图片注释,不超过 140 字(可选)& c: v+ u. B* ]) T9 c5 b; m
) s- u1 a1 B# N* d4 }0 ^8 \
1 J6 _1 s4 N! ~3 H  d4 W

8 ]! ~& v1 ]6 L+ q% q4 M6 W$ u1 N

0 H7 |3 ^8 ~, P4 s2 h; p1 H2.“部署失败”问题
+ `4 e3 j0 q0 i! K/ g$ y( b( }& q
/ f; [) W2 l$ ~  \( J8 ?

% a% U3 c- I0 c7 V7 M2 U( d& t' f" s/ g4 R5 Y4 u7 J

8 M/ |/ F, `% h6 |/ V. |- e
[backcolor=rgba(18, 18, 18, 0.5)]​
, D2 X% @" U* I* s  _
: `2 E( d+ b5 A" h: |# s9 o
1 |2 N: `& B6 A, `0 {

) t7 g0 @1 V- H, ~/ C" ?$ m
3 t9 `$ O. O2 |# K# a编辑切换为居中
0 g& t7 b8 X8 d2 b2 C+ G8 z
1 o$ I) n- ~* P
# S' X8 `- u2 J# k
" ^+ V& r+ J' u7 w6 p6 o! f1 G  S6 E% P! B
添加图片注释,不超过 140 字(可选)
& @) k- V- v8 }0 t
; V* _  d! W" b3 w1 a9 G0 z
8 O- {1 Y8 v1 d; ]( M2 ?4 R$ z" G2 c6 {. c
0 q0 o0 W# [7 A, E8 s' B- C) t
出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
" g' b) T: |+ B4 K4 N  p: S) P% F9 K

2 B1 g9 ~6 \4 _# _1 o) V+ h! \- f0 V6 r" I- ~, y$ k

; V. a$ O3 K, |* E
6 |) E. i6 ~( g+ e* @6 `6 M5 l
[backcolor=rgba(18, 18, 18, 0.5)]​
9 a* I: h4 X6 x7 f# W, A( e
# T. S7 {" _% h  N+ f& `8 ?' H
: c- u5 Q! p- S0 W3 s; L1 o, U
6 `* b- h6 y2 Y: D9 W! Y, L+ w0 y

/ O; n( l" }; a) L# e) h- n编辑切换为居中# e0 E# l& l3 y0 Z: N

1 ?# T* u! G% B0 V- }6 @2 V  g9 [& u* I3 I
3 a( l8 [5 V) G

/ ^0 M  y, H7 W  W/ U: V- c添加图片注释,不超过 140 字(可选)
. k  I, x' w; N( _! [- x3 X: }2 V3 K8 B- c# H) T- C
/ Q4 h' O6 R4 c5 m/ C  W: D  V
. z7 E, H8 ~" z  j2 e

! b* a8 s* I- i7 I四、总结, r) z7 c" x. S

2 o3 I% O( B4 m5 h
5 ^2 m: `# y$ G- y. U! D( Y+ W9 ?" ]

; Z9 X2 j" ?# q- C! t' E1 B" i2 S$ [' A: I! }! B2 u: N' S! A

+ ]4 W6 O. S) p

0 G( L+ y" `$ {, E总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。+ z5 w5 f7 U" [" i3 z/ X, F

* A! Z* Y; v  P( h
7 R# I4 t( r4 c: v# L" d7 z. k* G; U5 ~

% q* |" R8 N* o0 D以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
, X4 {6 |, ?: u* Y% c
/ m: Z, k/ E2 n* t% _5 ~( a

5 L& I' |# J3 T' y; I; Z
  • TA的每日心情
    慵懒
    2022-1-21 15:20
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-9-8 14:34 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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