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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。- P, _# S; V) m8 B2 y2 K( ~! N6 I
' B/ B# b0 F: @- s2 C: f1 T/ I' g
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。
/ Z8 D! @( D: D
7 X* J0 ?8 I+ t# t! |
一、修改工程配置
( X- j1 k8 o: A* G- V1 O4 k* Y. y
Step 1:
; d3 Y9 [  G, ?+ N; Q6 v
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:9 d3 V2 t! b# s* g* h
! ~1 b+ q2 a& `. ~. n
/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)2 q% U' C# A4 S9 s* F

+ R7 C2 G% ?9 l1 \3 I
, o* Y! L+ Q2 n8 j7 m( f* H0 w9 v
# T6 H) K; o2 d/ h, T9 X
[backcolor=rgba(18, 18, 18, 0.5)]​
! n9 G* ^: H9 r
) k+ @8 z, H0 n) b
8 {8 @- d5 o8 _+ [4 v1 g
/ P, a4 w9 Y* A  D6 I& |. p
& u4 G# @6 C0 X8 t& @' j2 A" n
编辑切换为居中
$ U# V3 r* p) o/ M4 Y
+ c0 o# z6 }7 u- e& s
; j( L0 w0 C$ X0 b
# y$ x; o* [7 i/ W- {& l. l4 v- y$ O# k+ q, v9 o1 f1 _7 z
添加图片注释,不超过 140 字(可选)! D9 N8 D9 ]* Y$ l6 H* X* e! h

: @, ]' s6 ?3 [+ G/ g0 ]$ L/ h- g% L: Z' h+ \+ x/ ?

' a" g% z; h0 U

5 D; U: i4 N6 ]& @Step 2:- Z* o' s/ G" h* \
依次点击【工具→选项→构建和运行】* F! g8 ?8 H8 s# y) R) h

! p6 i; T# o* V! y3 d再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。% ]/ J1 r, p. }: w4 r1 W. ]

) g8 e; m/ }5 _6 j
  J! U/ j& o2 x. I3 K- Y( R2 ~8 A" v4 ~, o- ^' M) ~8 N. u4 R

  E. w# w1 L7 c$ n, h4 `: C( I/ n
[backcolor=rgba(18, 18, 18, 0.5)]​
( }+ s# S& E- |& b- N9 `+ N2 n
' d2 _7 i$ y/ H

' x% O2 z3 B# L& k  Y7 i, r7 ^
! ~  A2 u3 a2 u. O" v; ?
. }7 l7 R9 j: L5 u. X编辑切换为居中
9 I. ?4 z* S' f5 o( G3 a, s0 I7 x! U: Z: ^
* D  f) d! A- H( @
* L- h4 |5 u5 Y$ \9 ^# `* I: P

8 E9 l8 z. l$ H7 c. ?0 k: [7 l添加图片注释,不超过 140 字(可选)
6 p: a* p2 `  F0 I3 R- P) [/ V1 o: @% D7 r  A5 H
7 E) Y5 t& Z+ H7 o8 C; Q

; c! P: u& v0 U3 t  [6 Q! z
9 A/ o6 K# a' _+ P0 }
Step 3:9 X  i( ^& [" j9 |: ^
点击【工具→选项】" _4 M& D% U3 I# R5 f! u& }. z
& X# n8 `, G; m$ g& H: Z, F
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
) h" p6 w9 }7 J9 @8 M! _. j
5 E% x5 w: P1 g/ j; n

) q( {7 o3 V4 j6 p* F3 k" ~
4 [: }) p$ W/ f& g

2 F. t3 I- G) y' g2 S( O+ g
[backcolor=rgba(18, 18, 18, 0.5)]​
, \2 W, E4 L5 n: g1 n6 s9 [7 I7 n

: i+ b+ V! {4 D( _7 R, Q$ y4 }& ^& e8 E' u! ^. h4 ~+ x; L
1 R. J1 C! [" e- c" ?, U" O
编辑切换为居中
- y9 f7 _. Q/ F9 e3 S& U" ?8 l- c
$ i6 T" `8 d4 ?( R0 U) x
" v$ g: i$ o! `6 u) b( E$ U& m% g5 |# q+ U- T
# s3 `7 B9 J2 T+ S4 ?
添加图片注释,不超过 140 字(可选)
$ o9 J. I' k2 V+ {' `9 Q$ H& p  ^" G( \6 |( h  N' |& A! n* T

5 |/ ?3 H) C" L/ k4 N# p" t+ {& L6 q* }9 v

& j; a. m. P- H- y+ u! d" c6 {( O5 @! a' m" u

5 W* U9 o$ i- d% E, _' O# j
: `, _2 }) o: l
[backcolor=rgba(18, 18, 18, 0.5)]​/ |$ d3 J- g2 X$ o. C9 V% x( y
& w# P' H& D; A3 k3 B

5 B/ ~& z# H- [1 |/ M; K
+ Q3 g# {, g2 O; a
- L/ ?* U, {7 f$ J4 C5 Y7 a, W编辑切换为居中" W! H$ R9 E- H& s) S
6 u  G8 g% u( z+ L3 g6 J! v

% ^! {# v: m& }: A8 i& ^1 H# f1 G: t" x% K" M

6 u# ~9 R6 _) z$ L  r) ]4 ], b添加图片注释,不超过 140 字(可选), N3 C) Q' E) z2 e5 U
' C. v  m+ z0 k4 \) P
& ~3 q0 b% E6 N& i
6 J, k. a. s/ W( J9 I

* g( l2 g- U9 N- _. }, s到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:8 ]. _- M1 o# a$ _- I
: S2 B. [4 e4 w% W' t
1.设置账号密码:adduser+账号passwd+密码
. g5 y& C0 C& g8 u3 M

* q2 u; w  K: [- |2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
0 @$ R( j1 h* S5 J6 z5 S
! L/ X$ y* V/ R0 |' {5 Z
3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务5 S7 z* e8 n% V: d
1 E' ]) h' ^8 N5 i' X! I3 ]" j& d! _, L
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
$ l0 t5 @# o! }7 u
3 v( s/ A! E2 ?  s' t8 y* I; X
Step 4:
/ b/ `# n% k+ e) H
指定目标文件路径0 Q" Z0 ]1 V- o; o
1 h2 T* b/ x+ i" @/ T+ n& o/ I+ p
在项目这个地方选择的存放路径要在.pro文件中声明。- K) B7 g' j7 T, c
7 |: @: p: W6 m/ `+ L
: S, r. Q' y' P- }0 @* V

& _7 |$ h9 _* H- i) i( w) @/ c4 e

$ s6 n' M0 a, y0 X! O1 l  U' J: g8 c/ C( X
[backcolor=rgba(18, 18, 18, 0.5)]​
: j! W1 S3 ~3 h% V$ D0 O+ C3 }- j4 e7 a, |! m
5 h) A3 w9 i+ O9 o+ W: p$ _

9 s& y( Z- Y1 s" F8 [- J: `$ [) a0 G$ p: g5 D5 Q
编辑切换为居中
4 C: U# T; L" @% ~4 H9 }) H( s4 g3 k' Q, i  Y( m# p+ f

6 \# v, t3 E: h, o4 A3 Q" [' M( U1 u' X7 l- z, W5 p3 D! ^5 z; l
* y( G/ f8 x. C- z# n* c; f; k
添加图片注释,不超过 140 字(可选)( O7 B( `( e! c; @  t. X! o

4 D( R8 {' r! p* g
6 B. b1 P  X# `+ Y
+ z9 V& a  I7 |' I: @

6 v) m/ B) [: ^  x+ }
. G$ X7 ?( b# R2 M- K: ~& J/ I( |* D. Q5 B" o: Q. g$ [

! @; `  V' w/ |' L9 N) N3 U
[backcolor=rgba(18, 18, 18, 0.5)]​
* |  J- Z8 p- v, f, B" Y# P/ x8 x
6 |' d8 @  c6 S" x- a/ u. c8 z# y

+ o& f9 I. S2 `0 I5 Q+ p0 _* N2 |6 ?' O6 x

$ \4 N. d; L" Z. y, ^3 z4 `编辑切换为居中
  l% t% e) F8 N7 o( A  L) r: R+ K0 a7 u' X1 v3 M4 K0 z0 K

" p* u% U2 ?! @- ^- H
$ r* T1 m$ U4 N9 U( Q
4 D" H3 e4 @# c' e添加图片注释,不超过 140 字(可选)4 `0 _( b# |4 I, }1 M; z

0 w$ @8 M, f9 @0 H" _- G+ t- b8 v8 s: |7 Q  ~7 O! K+ A

; x, z( B! q  Q; |
5 S4 d; u  J* B5 B) e) H
* a. R) c  V1 ]0 u( k; |1 z
9 S5 e6 ]* Y$ V- H8 T% L

2 [( a8 [, N" y# c0 P" A二、成果展示 6 P8 k1 ]/ E& M& C3 C( G" C3 z: J
按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。
7 C& I7 u+ h" n. w' K/ [  m

* k2 s) q( \4 d+ }6 q# G6 S0 U" \& l- H* _8 y. c
3 S4 ^* L) ~% J) F( B4 B/ S. [
0 V# Z1 _- n$ q0 O1 n
[backcolor=rgba(18, 18, 18, 0.5)]​
& ^: w; T, ?0 S5 L% l1 L
, z& F. O- T! l$ l: K- I
' I  T& y. ~, d

3 D" H1 `4 Q9 G' e
! B9 Y0 _" u' g7 v8 E; c4 Z3 c编辑切换为居中
4 \7 u6 H! R2 O7 W; a
, }( h" n$ v5 ~$ Y4 w; g
5 S4 k; c5 ~& d! l9 O+ r. s) W! T' ]( y5 u$ f3 a" U8 f
* i0 T: ^5 {3 I. V* b2 b
添加图片注释,不超过 140 字(可选)+ O) x0 j# D% P( q: A0 S  V! v1 \

$ R; E6 ^0 g' Z; ]- y) S: s
! [1 k5 K  i: p8 [
$ O+ C# a1 l; C/ \5 ?& d; k% f

1 u7 A' }( P# X- Z; A3 N' ]8 }屏幕显示:
% F  f0 ]5 V( P# [# y( T
" W3 |+ n3 p/ k

) }2 w- N) ~2 S+ D- l3 e& c
/ z8 D5 Z/ P: O; g: G: `
& a4 T7 o2 l* ?) P0 ^6 l
[backcolor=rgba(18, 18, 18, 0.5)]​# u" }3 x# O( b' w% n* o7 `
; V# `* Z, ]. \/ p- F4 [) G5 N
' h5 C" }  m' x! D+ Q$ B7 T
' Y6 ?' u& Y5 K- k) }# ?

# C7 k5 j* M" `6 o1 i# w编辑切换为居中9 L5 h% S# T6 A
; s3 W+ v7 o6 z( |6 H: T

% Q+ @5 }0 N' a+ W9 h0 r, h9 B5 B: @9 T  ~1 A
9 B; h$ C; u3 K, ?5 H' o- W, V
添加图片注释,不超过 140 字(可选)3 Y* G/ |' S; F  @

% m/ O& q2 u( u5 i# Q! O  C& T; T% ?
/ D7 H2 v2 }' F5 L

8 U" G) Z; x3 |( Q, n模拟研发人员进行增删:
4 [0 |' R, O+ Q4 I2 C8 R0 d

0 W0 r5 _" s" Y" \9 m( t* z) |
+ r" z8 U  [. j* ^" O
9 Q" L7 u0 A+ Q/ m) @4 O
[backcolor=rgba(18, 18, 18, 0.5)]​/ m% y1 Z3 i3 k5 D4 I

7 H. k1 U! t2 M* f: m4 D
, E4 n" X" W3 v( z% X
( ?2 Y  Y% {% G! S& A8 L$ g" O! M
0 |9 N5 z- E9 u- t" q) q
编辑切换为居中
- ~8 ~0 C* m+ z) e# I, M8 x6 C6 O* [7 q% R
, G  |* y5 K" q0 N4 ]7 V

. _2 e* T4 F# B, l; |2 W$ i) Y$ `
) r1 v1 b' W) j/ Z5 f添加图片注释,不超过 140 字(可选)$ i. V/ R( @. v
! O9 P% r$ ^: `6 R. i' P
! J; M5 \, ~' ^& U- ^3 L% T
$ \" F% @4 R5 E. O) [& e6 R

9 }- p0 l' T! I- {7 J* s' x" d屏幕显示:1 E% p7 Z" ~3 L2 `+ u$ h, x
$ A! a; I2 U) R

, y1 b% e; ?; Z
6 n4 ?7 F( R# J% S% a1 L7 O
0 |7 n- X; `& B$ W& ~& w7 h$ ~
[backcolor=rgba(18, 18, 18, 0.5)]​* A7 I/ v9 ^5 N3 t$ \" k6 D

3 d& N' h: C/ a. c0 F( y

6 h# Q$ w. `8 w, K+ A+ f: ]* h' F7 {
' E) q* q8 x8 K; W9 S& o8 |( ]5 P; E  `
编辑切换为居中
5 E4 j" J8 j! d8 r5 \) g( O. O- |; E. Z& w4 X7 V
/ i, Q  j  t3 R2 X  I8 A, U' W

% \/ f& E7 b" j2 i! F( F% {: v+ X; w. @6 Y8 o% J5 J
添加图片注释,不超过 140 字(可选)
! z6 l, }3 p! G8 X
* F* n! u4 b4 @$ Y3 C) U* i' T8 Y* A6 m! ]; N3 ^( t
9 z: q. Y7 w7 p3 b- r" a

+ J9 c/ `+ v  U. c. R+ [7 k# F1 Z* L可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。
2 ^8 f+ D- ?# ]7 S& h5 m2 [
1 n' }0 ?) v' I8 E, Y
三、经验分享
( {! |4 D2 k, Y
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。# k: n; p  n6 y* A' ^2 X

* T4 ^6 ?# S/ \1.“连接错误”问题
! `4 V& Q9 Y( b

- L9 |3 Q& m" f: y% _$ D; {6 @1 z1 m* G* g2 Z

* f6 j9 o2 _9 u. b6 G5 T: p0 q

* ], N. O; Q: m- z% q
[backcolor=rgba(18, 18, 18, 0.5)]​
4 q/ q; f( I/ `. q: _% Z4 `6 ~& G9 X9 n# z0 d! [8 z, Y% I% N

0 z- e! N. f5 g$ N) z$ n, h$ r, W8 A# M2 y6 R0 D

1 a5 ?' J1 @- C0 r4 o& k8 ]+ \& K编辑
2 s9 U7 P, @2 w' s  x
( V& Y4 p5 q3 `  n% C' O6 A5 F+ K5 H  m; W4 P
3 O3 c& J1 S* s+ R' ]" {$ e0 B- O
/ z1 ]+ Y& K) I) k+ d- @
添加图片注释,不超过 140 字(可选)$ L! `# t3 n# {0 O9 b2 @/ O
3 u7 {5 [3 w! S( ?7 S& B2 w
* i) ]- `; ?" w
3 }2 D7 ~, v+ E- ?2 x3 N) h2 t0 d3 l

) q7 |6 P; X. q2 r% `2.“部署失败”问题
3 o( m6 z# P1 {/ y! K, f5 l1 ^
- ]7 ]3 L7 x7 K% q

2 _8 \$ g7 X2 [$ U% R2 f' V  d8 L* M: o5 I( O5 ^) A

' c! H  x  ?: m4 r. P- H7 {# [
[backcolor=rgba(18, 18, 18, 0.5)]​6 h* j& C0 I# \  Q. l! Z

2 g* P2 b) y4 G& D

3 l( h% H  u, b) z- l2 R+ r. R* u) t3 j/ X+ I

8 i; y) v# ]. G; E- p$ }编辑切换为居中
" \( ^8 N  a0 r) L9 _0 r/ K
  y9 e6 h4 T( f/ J0 X
  o7 `. |6 ]: w: \. Y/ _% N3 B2 b6 }; F
. E! K5 v0 S7 O' O( y4 Z  ~
添加图片注释,不超过 140 字(可选)) Q" n% p+ T+ F. z

- `  I3 Z' c8 y# E: x1 }: Y/ |* t5 B' u7 R: X0 u) u( N
( i, c7 {0 {* _5 B) y; m0 u* x

* I8 o5 t2 A1 \出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
: Q2 m. E9 b7 u& Z

; W2 [. ^3 h% V9 H( Z" y! R% x3 |7 L
0 i) C5 L  \5 [2 ~* l
9 b" C7 s8 T/ L
- G" Y% b; v% @
[backcolor=rgba(18, 18, 18, 0.5)]​
: ?. k- `  n4 |
0 [9 E( y" U. m: u1 b
6 @8 q0 c  o( Q0 E/ }+ w

$ d# l: z5 ?! K* }! `7 H% w3 l7 |6 g& y  [* {8 d4 c7 J
编辑切换为居中$ X2 p# f6 P1 C1 R

9 u6 p+ Y7 I% q! M& R* ]1 m4 J% C" k, k; s
0 O5 r3 T/ i' y- f* r8 t

1 x) K2 ?, \: b( I" \添加图片注释,不超过 140 字(可选)
2 _8 T: J5 _! {* l  T& x- ]2 d
, ^+ D% r" m7 [+ k
3 K' t- c. D- {4 e0 z( p2 M" v* N$ u* c$ Z2 u$ v% K/ A, d, o
' z0 k( v. A7 ?7 B/ e
四、总结' s& I% v: K) N  B7 |

0 e3 v" R) E1 Q- P% r" d9 h1 M% \0 R, {2 o. U8 b9 j
4 e- }: ]& M; K" Q) v& b0 G

( H8 o0 [& p: [8 }5 G( H1 @
( w+ t2 k1 i* z2 q' b# z; {9 q% J$ u7 g

  }' i% {7 p+ w7 k总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。: P2 R; A  U" j, z6 c
) G% Z% E* ]0 f: o  n7 d9 K4 ]" ?
% {7 D. ~" G. {8 Y: _
1 @$ z& e/ z. a  w; Y
9 x8 E; A( P8 y6 `, w1 y
以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
1 c1 u0 C/ @6 L

' j8 y8 p2 E2 g; D( G# ]2 R8 `5 e/ D! L( W2 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-6-29 20:45 , Processed in 0.093750 second(s), 24 queries , Gzip On.

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

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

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