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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
" V' k' H2 y( M& w, M, G. s# I: {
9 E# k6 S3 @- T5 G+ ~  z# i9 R
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。
! h  U/ ~" a6 g, w5 T. ~3 n
: M/ R+ A+ h( }" |4 _/ V
一、修改工程配置7 Y6 s- X+ y" Q1 g# ?" G
Step 1:
" V* y- R' G! x. J$ I. n( D' @7 P
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
3 p! v, l! u* m- W3 ^2 @! n) t4 b
3 g' R% |2 g% x
/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)& f! R/ ~5 d0 X
6 f6 e* X6 w/ ]
+ u( }/ f: M7 A4 }* T0 k- x

" O/ ^7 t: F6 o. ~9 K, o
[backcolor=rgba(18, 18, 18, 0.5)]​
- _& F4 E6 n1 _& }
, L9 W( _- v+ M2 y; D

3 F1 W% ~# s' @  B5 k3 }
5 k) W# T' ~% F0 d) i5 h$ U( f/ U, {& Z9 i  j1 `1 d# ~
编辑切换为居中# P4 ~' V- G' Z' X  o1 K1 h& T
6 b( s! i& }5 E0 A! X

1 i" }& H. k- S) ]1 U5 Q* x$ u5 v
4 {) G* J! e  g9 Y
1 r6 N3 X$ x7 e4 O$ Z, m( l; o添加图片注释,不超过 140 字(可选)
5 Z+ H0 J# k$ M# [0 @: B& Z- Z* f2 A2 q7 p9 b  L* D
+ e4 a* E/ _0 W, X

1 g7 @& j5 W5 p* J1 |- ?: C  w

3 G9 j. A9 T6 S8 F3 rStep 2:
8 k5 z5 h7 a' w
依次点击【工具→选项→构建和运行】
0 K! r8 r4 a) N' E" \* T

! [2 p) s# ?/ ^2 K. P再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。5 r2 `) |# J& j8 w

7 N& V) Z2 e% o8 {- H& ~5 x( A  z; d. ^" ]1 q1 {3 X
3 m% F& x, V3 F; p% C
6 c; x& l% N1 X1 J
[backcolor=rgba(18, 18, 18, 0.5)]​
  \3 N  n: G6 n/ C" @# t! \$ `0 g& ?) x) O" H4 Q4 h6 b

/ W: K4 Y  @# e" [
2 o+ Z/ K3 `+ |4 ~4 e
, i6 K- a8 s8 d3 k9 |: n3 O3 y! u编辑切换为居中2 ~5 O! V% K: w/ T; W& @  I) W" x

& A0 [8 V% \7 s
! d0 z+ R. m4 I+ I+ f2 ?
, z  [( f% G7 N- Y& c$ @! J  q; N' E+ G; d2 [) P9 \& j, P
添加图片注释,不超过 140 字(可选)9 n: l. M$ L7 u5 g% k  Z
4 o' U, \0 |9 `3 ]  c1 g4 R4 o
, \3 J) V; C4 [! }
# I2 z' {- n- I+ A6 c1 x
  Z( _% k. [1 M+ d9 v3 I
Step 3:
- Z* C. C9 M9 w: H- S7 z: e
点击【工具→选项】
# I9 ^, M) R8 F* B
* V* d+ Z$ S8 s
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
8 q, V6 S+ j& T% U

* t, i9 q5 B1 q9 Z' s  u2 B4 m; t: B: |5 U

  c( W5 @/ ~- I! f. ~
8 l2 q' C. C+ F, R! H  `* ~
[backcolor=rgba(18, 18, 18, 0.5)]​
9 ?2 b* w! s& i5 g& C" ?; ], V# ]6 e% a3 K# @7 [
) Z0 }( H. m/ b1 _- p
, w) X: [9 E$ T) m4 ]$ H/ E% a# p

; G! |9 w$ p) L$ H9 j编辑切换为居中
; z. }6 R% M9 I5 ]. g2 j; I0 ]6 C0 z& n7 {( ?& H5 w
4 d: i# C4 R: _3 ?+ R  q

* T5 R) Q6 R7 M$ M0 Q0 c8 ^, ^6 o' P5 f& R: E
添加图片注释,不超过 140 字(可选)
, \  @# l5 z: a. S0 T0 m) f* R
8 \7 ]+ x; X8 y  e! L0 U* D! _( }# Y9 Y: x2 J
/ a  r6 P0 M8 u' A  v- g/ ]: A

0 Q( _9 X: O8 K5 x& y/ F& M5 q2 M! p- P
; y, I' j: z6 m8 @! G, z# D% X2 G  R
0 |. r0 T# R) N& o8 ]" Q8 U. z
[backcolor=rgba(18, 18, 18, 0.5)]​' J: Y7 t3 \4 W9 }8 P/ l  s$ F
( ^( e! m( E3 ^5 Z/ t) H: B( n/ e4 F
- U& }7 _$ Q8 a' t9 _3 h

3 z' C5 C: ~' x6 o( f4 `
' n$ G! G% f& s编辑切换为居中: ?, @2 {4 z3 ]6 {- P5 d3 E" i. q

" U! A! [! I6 o! N
8 B0 A8 W6 S" B) S( F6 t4 K/ u( S! P) w0 y" G

/ s) h& ]4 _, Y; d% C添加图片注释,不超过 140 字(可选)4 M6 N! h2 b* n' w8 l

: j$ l' {; f& n% b; c) [1 P- B! j
. b5 h& ]0 X- I  ]7 ~
3 h+ |2 Z% L2 G) j; s
到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
# \& J. g9 s! I

6 g2 m: U- o# O# T- e6 z1.设置账号密码:adduser+账号passwd+密码( Z6 m. ]' ?2 u2 L* n6 O

5 L: t7 a! G/ r% }2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
! L% |6 V4 p; f& F

7 l+ ^5 e9 T5 o) J5 p  f8 x2 r! I3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务+ @3 z) @6 ~0 E
; G1 f! w; r; b7 N
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
8 ^- v6 A6 N* K# [& F$ r9 h* |

# H& {% G7 B' p% }- |, v: M6 yStep 4:
9 p) }# A" _& }) g% R* Z
指定目标文件路径& b( T9 Z. Z) v' Q6 |0 v5 v/ C, Z8 H

7 J5 ~8 P7 x, @+ `. l) A在项目这个地方选择的存放路径要在.pro文件中声明。4 k/ r3 O9 M- C+ M/ {
, d8 ^, Y8 m7 ^

4 @& |* C+ R% _4 i3 D- H: W4 I8 }, g8 K% v  n- W

7 F2 }3 C2 y0 n: w: P  c  f: D; L
[backcolor=rgba(18, 18, 18, 0.5)]​
( L+ M' a9 M4 c/ k  U! z/ l% h5 ]
9 M* ~- n: t) o  \. {7 }) c
/ L! _' b9 h! {+ L
, A+ q8 V; v1 c. E8 z1 |

. E" K1 f) _  N0 M/ v0 }, F8 ~( ~编辑切换为居中
+ q: J3 d+ q$ p1 v5 H. k! `: z) P5 ?& R/ U$ }* e4 @; o

- v. j: s+ J: X/ c+ k0 m" }! `/ G" [) |2 _, e1 e
# t: Q& l: k3 S8 \6 e2 _& F1 q
添加图片注释,不超过 140 字(可选)5 x4 R7 C8 A2 f& ?
3 z6 v) D4 U. w" c1 C; K

& e6 _: j' I. @5 U- B1 y
* m+ _" E( P7 V7 f  u

9 G) s* a) g/ M& L
/ O6 o% Q# q" _' O; u+ B& }5 p# r$ |6 o

" [# Z) o8 T9 h$ B0 ?6 {5 q" m4 N
[backcolor=rgba(18, 18, 18, 0.5)]​
$ x7 ~% H" Q9 ?
4 k6 i0 h' x& G% i; ~  C
& B3 C  H" C! t% n* Y- X

; O* ^6 e& ?3 u$ z+ w/ @2 U5 z
  G0 U8 g  n: a  @编辑切换为居中8 ?2 S: C7 W$ C0 u% `
" N* l, W! d# Q
$ R! d. a* g2 n; `  Q2 \+ n

9 X+ {2 q- C& `
1 d7 r8 e( \! G  Z# Q添加图片注释,不超过 140 字(可选)
4 \7 M4 X' R; D( Y
3 o5 B% e$ L6 y; w4 ?6 c: ?9 @) f# D) Z# N: b2 K
4 @& a, }" m+ ]# j
  l; D) `+ D6 k( {3 X7 h, u

6 L& N5 P( s. x# c$ \+ `0 s6 k, y# _, q

4 C( X0 `: i3 Z; ^. O0 b$ a二、成果展示 / R* E, x7 Q; }$ \
按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。, }6 |# `8 C" l# H7 H
3 v. p6 h3 s) z' W7 ]( [/ t- b

' Y* L) U( p+ V, d  t+ W4 F4 L
6 W) I0 @' Q1 d& S
  Y. q* s! M) |* b! x+ `
[backcolor=rgba(18, 18, 18, 0.5)]​
* v% h' @; a# W* H) f6 M# E; h: s) K5 E& ~; ~2 j9 `
) y; Z5 `( ]7 H

( ]  F; S- y! U, c0 e6 N. c( Y
% ~& m% y+ f. U编辑切换为居中
, x6 H) c; I- z. m1 `* z& J( J8 Z& k  M3 ~/ U/ m+ ]

: f) Q5 m* b4 l6 V+ Q3 U$ w
2 g* Q  G3 g* ]. f5 G: L6 R/ A/ |# u. Y3 P0 u2 U; ~9 W
添加图片注释,不超过 140 字(可选)
% `& X2 l/ e9 v% k* p, t  d6 d3 k8 Z

: ^. k  Q# ^0 `, z& n$ X5 l
. `& U* R$ f8 K1 Y& c- ^* r

) J. F" ?  _3 m8 q# u; q4 ]( t: X屏幕显示:
5 f. K/ v1 j8 O. D) w  `8 m

- z% n4 U( x" g; ^  z( I! s1 x0 T* a2 ^
" f4 Y& k! {8 t3 `, q0 P1 D
: c/ Q* a, N% F5 I% p
[backcolor=rgba(18, 18, 18, 0.5)]​6 p) j( O, \- @: f7 R2 p

: G: g; s5 R. |

/ O  c" h: k8 D. z# R( X) @# X! X% E  e5 \3 R+ V

2 l2 e- s% u/ _% c! a编辑切换为居中! f* V7 C0 K" p9 ^$ U4 \

0 `5 Y/ c% L8 |9 C
" t6 p# G. Y, n* p
6 |# |9 h: J. P& h
( q! N4 l8 B  B; c3 U2 d" B添加图片注释,不超过 140 字(可选); V$ r7 n8 ~- m( {
9 m. x4 M- y+ H& v% r& s6 ]! j
/ o# `; S6 m5 [& ~  @
4 V5 d; f" I  n

4 N) u, [. }& E& j模拟研发人员进行增删:- x' G: s' `/ ~( d% `
3 D+ L: n' e& f. V6 f

, `  f2 M2 h, S9 N0 o8 w# s3 ?& @4 u5 c+ L8 ?! A

, d" u( m$ \; q, i. E9 w
[backcolor=rgba(18, 18, 18, 0.5)]​
( F1 R! t9 E( Q* y: f" u: T/ z* Z4 m4 I% }

$ X2 E5 l; I- z2 ^1 k) F$ r# t. q( _- N$ Y' b

7 B' T$ B# u' r% h, E编辑切换为居中5 h  Z  R! ]& `

4 H% G: Q" Y# y; S% C# a0 J1 Q/ ~
9 x2 d, |' z; h0 S8 f" {. {! Q' r! n! w! T5 S2 r

+ I! d2 |& d) ]添加图片注释,不超过 140 字(可选)7 F2 ?9 q( |$ l$ ?* H; s/ v

, ~( Z+ Z" A# o) v4 {# C) F- B8 Q* F

$ }7 a+ Y. `! Q) M7 U+ @
& ]0 H& J' W9 r! p( J: l/ w
屏幕显示:
4 @/ x8 u3 i7 B
3 }1 X$ ^' E0 a+ N- B

( O. {: O* T6 `' C" D: X: f5 t+ Z$ V% k" h( W3 Q9 n# E; s3 l
4 o# U: M* n2 j2 h+ v- ~
[backcolor=rgba(18, 18, 18, 0.5)]​2 [6 V3 C. F4 b+ w: V
) O$ Z; P6 p5 Y4 i
; N8 Q, e6 R  _. J
3 L# e3 o7 d* h! H# Z

; g8 F, B+ x2 b$ t. t编辑切换为居中
" z: V& P/ c- \3 e4 V& f& |8 x: w' I8 Z+ d' ?* @

. t. Q: E+ C7 ]) b
, k: Y6 z( y/ V) b
& B' Q6 d$ Q% \% l. @添加图片注释,不超过 140 字(可选)
( H# r" R4 d7 \+ |+ j8 L# j4 e2 c
: e3 ?$ |2 w* ]  A" F( A6 ^

2 b& s$ j& L; G6 H4 Y6 }  p
9 p9 l$ {; i8 X& z6 P
可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。1 C, W, I0 l# D/ Z( c1 I( X

! E7 W2 y' I- P. p- P+ p5 X& w三、经验分享 + [7 l2 C' ?3 V9 ?
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。
0 U2 _8 c/ P* m3 d

0 Y; v' k2 z- c0 f1.“连接错误”问题) v! B7 u- h5 |  G- v4 |9 L

4 m7 o" j7 @+ |% M- q: j* R
2 j; V  e: H  }& N2 |9 l% E. S) {4 Y6 Q
" X. u1 I* w! L3 f% s
[backcolor=rgba(18, 18, 18, 0.5)]​7 i6 N3 s7 p' s$ v! h- N
2 D" ^2 f6 Y9 D3 i* O

3 @6 W* m' _( f0 V' T8 W( H% H6 F3 M. _. J/ P, Q( E5 m; S; f
6 Y5 l" k' C0 p4 W# I3 X6 B/ e
编辑, f- O. X% e$ S7 d& \! s
2 o) M. y7 N* c+ `0 O( D, U; P0 S, Y
1 M1 F) @4 p" Q+ E& Z* h

/ D& T8 ?. N) I: O# F; a% s
. L! Z$ i* Q& I+ W7 Z' X添加图片注释,不超过 140 字(可选)# t+ U% [* l) ^# D1 g& r9 T

1 R8 I7 l9 c% L& I* ~' }, [; J2 T: }/ K- U5 k/ w# P$ D
) }, f4 s, N  x# r3 I7 G

! N, k8 I  k+ H8 x# `" B2.“部署失败”问题- Y, y2 n7 z! n3 n# w' X
3 ^& {/ Y; S" e
3 ?5 f" n- S+ {

! b& m; [, T5 D* n

# i, ?8 C5 y/ V+ h3 a0 o
[backcolor=rgba(18, 18, 18, 0.5)]​
$ e+ d7 `" H/ t3 Z# X, l) H3 j% m- B2 z. b3 H, k. L$ {6 q

) I8 M* J/ b; T2 t/ B3 U* f( f9 j4 {7 d6 N1 o6 \
2 Q5 S. y% Z' D
编辑切换为居中; G' H7 z( Z% C7 t1 Q) H  f# O
: ]  n- f( N) ~0 B5 w! ~

; z- H/ ^) ~8 ?, f3 t! s, a; r- e. T
5 K- v: S, U7 H" z/ S' `+ d
1 g% S0 O1 p3 g添加图片注释,不超过 140 字(可选)
) _3 |3 m( @6 L7 @3 b
3 R! \4 m% Z0 `; r- x0 w! ~; [
% d3 ^( Y# s5 j9 P0 R
# d5 c4 G5 ~: t, Y
+ J. e& L; K: I6 |0 n6 ?( B* ]
出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。2 V' G  ~1 _/ O9 E6 ^

/ X6 m6 y1 q8 l; v% Y4 z, \5 |- D/ u- I

0 y7 U3 S/ O4 ]; U

3 W( v3 ~% @0 g" _$ c5 x
[backcolor=rgba(18, 18, 18, 0.5)]​  b  ?# s9 Q1 M  T
8 y; T; k. S% b0 U+ K5 ?
7 T/ ]* r0 {, V0 Q' Q9 C
# N4 E7 x0 O# [2 D. D

& V9 b# j7 m$ H) q/ L6 x, D# y编辑切换为居中4 V' E4 U6 X8 }3 P+ t
* |% _; M/ b( j+ x
2 w% |" A4 {( ^  m& ?
; _% v! a# C# l8 a
' d, S0 \$ |. l+ |0 J" c$ m% ^& ~0 n9 _% T
添加图片注释,不超过 140 字(可选). ]) c! v6 O' E$ t8 U8 o7 N

! c% r  N5 Z' |6 ~- U
  y6 G/ W2 G3 v! M) h! Y: p0 Y3 L* A( u: u  y. ^5 R7 R
+ L* Y4 n' [1 R- C* W' V
四、总结
; o3 O7 H# ?4 q+ q* d: L! y; H( z  `
( E9 g5 r. r9 \

) C) Y: f) P7 _1 u0 n" f, c4 n" O# C9 ]

& S5 ?% F  ~4 G- A+ @7 [0 A" c$ L" P' {& {; @; p  O( y( g7 Q

, g$ S6 j- r5 P% E+ N- n
- X( K5 _! M$ M: X" R; R
总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。+ M, j- }, j1 l& N

) s, ^$ f& r% ^. e: ]  K: k4 N7 m8 ]4 G2 @4 }
! f- l8 g; A: d  a1 c

; p- }" C2 h4 y以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。" |* ]6 U$ u8 W( s; ]2 x
) D3 Z. O1 F7 S- B! T# I

  x) q1 M9 I8 i8 M) k7 ?8 S. H7 w
  • 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 16:17 , Processed in 0.187500 second(s), 24 queries , Gzip On.

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

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

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