|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
, t. G) c2 w- W# Y! {- S$ ` X9 `( `" O! }# q" {
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。, C& }: E' V( H7 @- g
5 s4 y& i+ Y( ^9 H. B" }2 T- Q一、修改工程配置
9 h- F- ^3 j- y9 RStep 1:7 u* y' c2 W/ M% V* B$ S5 T
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:' @" ^: \" C; ]& r& [2 A( v+ e
2 z) ?1 {1 ~* ?& R. O/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)/ [/ o. L% A S# ^2 [: z% D
6 W! [- C8 O) A0 {* a/ C# \8 r9 o4 D+ v; v& w7 ]
6 W, D; I8 n; ^
[backcolor=rgba(18, 18, 18, 0.5)]
% x$ B9 ?5 y. i. d; R+ b. H9 g8 g- _7 W+ _- c3 y1 ^
c" @) V [7 a; j+ C, J- Z
( S' K9 z1 o: E( H6 M. \8 h( q2 g- Z1 u# S" n1 Z7 F
编辑切换为居中7 |' h3 [" m- w, t4 L: P5 c
$ s' j4 Z6 N2 `; ]
9 ]( i7 H" k4 v: O* L1 `0 F" \$ ~. Z) \1 \( P. y- t) b' V2 A3 d k
$ H/ U. |# F( ]9 X添加图片注释,不超过 140 字(可选)
; Z; F. k2 H- l3 d* E z/ e8 a- l% W5 U( p# v
/ j3 K/ R% V$ e( p5 j, y+ F3 ]: Z7 B8 S# z, t
2 E" \: p: k a. ~$ ^Step 2:6 |; M4 M! ]% b' }/ J( X
依次点击【工具→选项→构建和运行】2 \# c# n" T0 g0 B5 z
( Y j( P0 O3 j; I& e# v. m再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。7 m# Z9 G* x8 w0 J; |/ I, U) |6 z
1 @! N: z6 H/ Y0 x) f$ R) u. \' m/ ?7 @" n
0 c7 b5 C4 @' w
6 g, r! e; m1 X+ j) y2 c" K [backcolor=rgba(18, 18, 18, 0.5)]
9 H9 r9 w( X# g8 Q" o9 c0 M
- L0 |0 ?. s1 f9 }: S
! R; ^4 ^- |% t3 \" ?, I
" E) q$ j$ j) i ~' Q% k0 i4 H' Q a* v4 Y1 p3 m
编辑切换为居中, Z5 d. c, ~& k. G9 t
1 E% g+ R2 a( o f* Q* q( [
n6 N" R9 ~, Q3 ~ D! r+ b8 H; X' f7 V. x
- }" ] @/ A4 w4 ~& k% B+ q添加图片注释,不超过 140 字(可选)
3 w$ ^" \! ?" f" Q) v7 L, K2 J
1 F! y* j% A# _- s
4 M1 |. m7 Y) n& i' w- n% {% |* c9 `" z* j+ {: V
' B4 }! z, n2 ~( q+ I; OStep 3:
2 P* \/ S; J5 u: I& U( P x0 S点击【工具→选项】" m$ K8 P) J0 [8 a( N; _
/ q+ {) v" A5 U/ i( e% L( R
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
* B8 v! r# W5 T: b4 d7 Y- B: e5 A& i6 E# s
2 E t* V% O; f' G' H6 m
; o! L# d8 k2 G6 |! }. |8 ]
" p# A/ Q/ L! _2 n' e! A
[backcolor=rgba(18, 18, 18, 0.5)]
2 U) w, k6 f+ F b& _8 V0 f7 n# j% Q* Z
9 D9 w. ~1 C2 H7 r3 t4 S6 B4 n, F/ G5 b1 T$ A
, E0 U1 o! g1 n% s编辑切换为居中
' d% E; A; m5 ]( s3 \, L
) P0 d$ o5 z$ G9 s8 R+ H
; Z/ q2 p5 z% Z6 r' C6 @! b) Y! B" p% K, {# o# i3 N0 Q, ~
% C2 G5 N. `( c, O/ w
添加图片注释,不超过 140 字(可选)$ h) a; f* a! q' N
5 x) @# ~0 X) _, T2 b' O& U
8 w, b0 d$ M, {; X: y6 P D7 d
) l& m; z8 K- S3 [ F2 ]! }% B+ L8 n. a; I' c& \0 a- @# |
" h6 R# w* O- i9 v1 @! D4 p6 e& M/ I/ n& C& p* g- v, ]7 t; ~
1 x2 i& ?$ S4 d; X- G [backcolor=rgba(18, 18, 18, 0.5)]
1 A& ^, _. Z* d9 ]) R
1 u; O2 h2 u% Z( u3 ?$ {& V$ q3 K & U& } p( t4 Z8 c! N k" f; g
1 C) R* w$ r! I0 a6 S' r& G& p* s$ }3 |0 c3 C
编辑切换为居中
$ p% m# V, q5 Z& Z, `: g- h3 I6 s5 W% K
/ {* S1 S( f) v' a0 o' D2 F9 o3 B8 A3 e8 s
# C8 r+ {# o, v( J添加图片注释,不超过 140 字(可选); g8 R0 } I% a* `0 \. [! F. i
; x& o$ m7 q8 E v, d& y. o2 U* T* b# v/ O0 E' ?
& _7 _: X, I. H3 ?
6 M" L/ A$ ?6 y- I
到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:' ~9 \1 w' f0 D
4 Q0 m! }9 [. U3 {4 W7 g# z( H3 z
1.设置账号密码:adduser+账号passwd+密码3 \; C' Z, \. @5 e! q. y
/ s U; h) M) u
2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出1 i, U) D9 `1 y8 C" l! a$ i5 \0 l
+ r4 Q0 m6 ]2 x! Q. k
3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务; P6 c* M$ h% B; V" I1 O3 C' g
4 A; i- [4 |! C& P
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
& s9 C9 E3 n9 z/ q' G
1 Y1 C9 h2 e/ g' O/ o+ h, C* mStep 4:8 A0 X" v! B3 ?
指定目标文件路径$ q5 V- \! o$ f
, i$ v( x3 v, j6 g4 v0 p& ~
在项目这个地方选择的存放路径要在.pro文件中声明。
1 T" P; p4 ~0 y& m( ^: |3 B) y" e/ A& W) ?, t6 ~5 i6 X3 S
+ [& O/ E* b! }% x# @
# l! i% s" o) s% }! z
]) }. ~, W4 H& k5 {( H4 s% r1 n: @
[backcolor=rgba(18, 18, 18, 0.5)]
6 a, g8 x* R- k9 e7 l8 N7 f
2 f% g1 b1 Q+ @1 K2 y# v
/ ~5 e+ C& I8 Z7 l3 [4 W( |
- g# D+ c$ O- U) f$ ~
+ E' P$ ]4 ?9 o, S. f编辑切换为居中
" w5 l S0 o3 L- n- d4 C1 c$ w: O0 Q% ^% O
& R& y, t- v% H& T5 ]' ]5 }; n
# [8 K0 d5 p. B7 p: X
/ F; q1 F6 M) Z添加图片注释,不超过 140 字(可选)
7 R1 c( g. \8 Q3 V* R8 C
6 Y# r$ Y2 h& W/ q1 [) l1 A8 z
+ E$ ]$ V/ X* N$ U: o! S* F* l
/ i. o* L j* F( e c
$ H4 {5 z0 d1 i3 _
/ \9 v5 ~6 O* B) J! i) O) v; v4 s0 @! t" G: u
% N% c( M5 L( w/ h e) w9 N. s [backcolor=rgba(18, 18, 18, 0.5)]
& O- v( S3 b- _- A
% p5 l; f7 U* A
' L, N. E2 ]* g& g- R2 e2 O. Y
+ E. \& B& H+ c2 T$ G2 S+ |5 O
+ l5 o: D: z' }; L编辑切换为居中
2 A+ u; B# g$ S, _
( f2 r. e0 S; X4 `9 }9 X- e. f
4 I0 E, q3 l8 A7 |1 h: M" v3 e/ r# c
0 c* y; z1 `4 [. j) X" {* K, f3 z" Q8 Y, J0 A+ c
添加图片注释,不超过 140 字(可选)3 M( l4 p+ B2 B8 d4 Z
2 h) a+ _! q6 S9 S% z0 t
0 F: A/ z$ x- W6 B8 z( E
\ Y& ]1 [ k( m- {! U0 p" c) K: E2 u, M* ^8 T& O: H
( B' L3 n L2 p% q# D# P k9 V
2 F$ X. A6 x- W7 Z
6 B' f& J# G7 R1 n二、成果展示
3 h7 s8 F$ h! T- ~, x按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。2 R# S& v# I4 G9 p
% D0 H7 r' S( E0 f% [3 N* D
. T" _$ _3 C& j8 x }' ?4 C- j1 k! c9 A' w2 |9 Z- c2 R3 L+ e/ L
, P, G' T) W0 M4 `5 H& n
[backcolor=rgba(18, 18, 18, 0.5)]% J1 {) ]8 f: Z4 a
* X2 \9 t: y; ?1 S- m8 }0 w( X
: y! b- f" D/ }7 l) ~) k [# P
* x! K. U; O$ i& L2 A
0 l* I! V7 l d, E. d& _编辑切换为居中/ [: {4 R2 I; g" { D4 b; w
/ C9 O, X# v; ? I) ^
% @% R9 ^% ]' [
x7 `4 p; D0 o T1 Y( h8 b" j$ w3 l7 p2 B7 }% Z
添加图片注释,不超过 140 字(可选)
, s: @! T- b6 ~- O! e5 U) \0 u8 p, s1 H0 b+ [1 l0 v
& B5 R/ [8 v. K9 s+ q
K. A4 U1 j- ]0 G# n! @1 z4 `' b5 ^6 a# M3 H
屏幕显示:: t+ F3 O% X! N) Z% C6 O
. x: q# O; l9 [. a9 _: c& t* i0 L ]7 a+ o
b3 n' C# [' Z) k6 |% \9 j0 Q
0 N4 d6 l; w+ a( o: w; n
9 c' m4 l. D) ?* \ [backcolor=rgba(18, 18, 18, 0.5)]
; M- A, j$ B6 C! B" c! K
+ l; N9 `5 T& K. m) V4 N. P
' o* `! [: R; g2 z9 Z c# N6 ^# j1 F/ C! b
) X. u. V3 G! b1 O5 X7 i0 z. j: @6 q% q q$ q, r1 C. u+ V$ v8 Q
编辑切换为居中6 g/ L6 i& Y5 u1 @& q/ O& o6 `9 r7 i
5 M* J. k D4 h( n6 V* z
3 t& l3 Y3 ?4 D/ p
~" L8 A. ]# {: h( a( m$ d* A, Y Q6 l3 c2 p
添加图片注释,不超过 140 字(可选)
6 b @3 Z' T5 k& `9 O6 c! m8 z6 u( A
9 H$ _! {3 ]3 |$ E1 B$ \" U: s
& G8 C1 N) y8 u
+ o# |* y8 z% \4 F% u s! @1 m模拟研发人员进行增删:
# }. }0 X ?, R! X; `& r
3 J9 S6 C2 Q \. @' ^% E
, Z, {% v% j2 ^- q1 O6 O* O1 {; L) T1 g" p, ]
8 X6 G* F: `/ O: R, ]( F: V [backcolor=rgba(18, 18, 18, 0.5)]
! v% C3 [3 O* M% M
, a6 u9 ]' Q8 `/ l7 Q 4 O J: Y1 m6 |: n; J7 F
' o$ N1 ?. P# A! m
+ F& n0 X8 j1 W7 M. d3 g7 ~4 y编辑切换为居中5 [# O" Y7 v' S7 t' H
9 x) C. V$ j6 c& z. v# Z" t J
2 Y+ _7 z4 d: ~- }/ P, ]4 ]+ ^9 Y- h1 @3 h4 H; h* Z8 S
5 R; Q: i, p3 O添加图片注释,不超过 140 字(可选)& H- O' C1 w% H: @3 b* s) ]
! |) s3 D- M) w; C) u: \
3 J1 ~* N7 S# U# p% L& u) T8 D; G4 k1 r- u
& o) Q6 s8 ~! O' I, c屏幕显示:/ w( |$ t& K9 f
. Z, V( s4 N+ j% x. ^7 S# v+ L& \* X. [# x V) ~* w. c1 C0 W. q
1 m: y9 ^- q! n# E, `( H: x
; ~7 z) }# y3 g% h0 v; O [backcolor=rgba(18, 18, 18, 0.5)]& F2 _" }% v g% u8 l+ M. c
# ]: h$ s; X5 O# m2 l% I* ]. O * s% q' R1 ?2 l# _
5 i: ~0 G' c- U* r3 `* J. P
* m0 Q* a& ]) u- E( w编辑切换为居中
$ h8 ^7 D) v' |. T, {" F
5 H( G# ], S9 M
7 l! e5 Q6 d$ U% I3 L/ r0 m9 I7 {/ O! t
' G: o7 F& Z- b
添加图片注释,不超过 140 字(可选)
9 C, \! X8 b0 c4 a! f z2 h0 J
1 b5 H* ]* ?, ?' _9 i6 x
, \5 v$ w$ }9 T P7 y% o8 z9 M
( e( a' U- k8 o9 Q: B. |& M7 K+ v& v
$ r' S4 t7 R( T可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。2 X- l0 t6 ]4 D" h
: E* n# U4 S R/ T3 @! S) f三、经验分享
/ [& J v8 }/ g2 S4 O: B+ c在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。
: Z( c a6 i: x2 @# T$ b+ M/ A
6 V+ ]. {: H* t7 ?: F# E/ v1.“连接错误”问题- V! H/ F- E& C& t/ m
6 L2 ^4 L$ s: i s, e: [; \: T, n
2 }- z! Y) q* R7 I0 f
4 j0 A8 F5 l9 [" z, `( U$ u" T- A/ f$ n5 @3 D
[backcolor=rgba(18, 18, 18, 0.5)]+ X* R- d! }% S
& f' _% `( Y: a
* L+ f t: V+ }" m5 y4 k8 I* K% V7 r( k: ~
: p1 q( D& d# [
: f/ C7 a0 ]+ w+ ?( r! B$ G3 S ]编辑
! l1 O" @$ I0 ?4 `! W" x3 G2 S: r9 a0 E* U% k* v7 U
k& s: N/ g8 [
9 u4 A; b5 q T" v$ g- g
* c' j8 u. i$ h/ s& n0 l4 s添加图片注释,不超过 140 字(可选)8 ?$ n8 d( y8 l" K6 o! D
b1 v- F+ k0 ^5 W0 D* }7 A1 p
* Y z" \6 }" _ B' k
2 \6 O( K* Z3 u5 ]+ e# j. ]# C2 g. z* g
2.“部署失败”问题% Z. |' Z4 H r7 b$ E3 \8 x
8 L* P2 x# G2 N, h5 `3 ^: N
% r4 Y+ _' W5 x% Y7 L' c9 l* n1 F# u( V e i
0 V8 p- ]7 h+ J+ I& `% \ [backcolor=rgba(18, 18, 18, 0.5)]% Y+ a. Q- \1 @& Z/ _+ ]( C6 @
5 b; M/ g5 k; S/ O \
5 K3 v9 r( \( @% u3 Y1 y" v$ o5 E; g( c; b/ J7 F
: z& y( D/ e% m, D$ |" h" W
编辑切换为居中6 Y/ C( \3 ]$ _5 w+ v1 B
5 r: ]9 X/ T9 w9 f$ m. N, g
4 v5 ~( t0 W1 b, J& g
0 ^7 v3 J$ u' i8 r# X
1 _4 {! V0 O+ l
添加图片注释,不超过 140 字(可选)
* B* @( W6 \0 M p7 A# F, p" L: z* A% H; _; D
" G1 Z r* M& c4 U. o8 J
# A; b* ?' N; o# k$ D7 s& u6 A/ r
出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。" b$ N) x: j+ S
! v1 {0 C1 N) E1 [; f
% D! u# L6 ~$ V/ n
/ ]% o o7 X$ j) A7 C# o, y7 q# f
0 ~( n# |3 c, C& `8 Q [backcolor=rgba(18, 18, 18, 0.5)]
, Z2 j1 K$ M% Y. ^& t5 |: |. g7 j( }( O3 n8 A) D
) T3 S3 U+ V- X+ w. u. l) I5 w- L
% o0 Y! I" `) O3 X' ~% j5 I _# d! j: r( ~
编辑切换为居中
6 I- }! p# _( O1 [) k5 a# B+ I: A5 R Y; ] K: ]* c7 _$ t
5 V4 I9 H7 ~# F8 R
% V8 M2 N4 w: Z1 C
# y# H- l5 G; p$ r, Y' g) ~添加图片注释,不超过 140 字(可选)
/ |' {- T# X0 j) X7 b9 R+ ~; C2 t) N3 \0 f$ P
* b# U) X: f( G7 s7 U' t( J0 ~! r
' H5 V+ {/ u3 H" b) t! m$ b. C
" N& i$ E/ r5 q
四、总结
8 ~5 H( u! k. w1 u2 g$ l, w7 {* K
+ p4 W% }' P0 A) w1 N' N6 `$ o6 S
. X6 Z, v& {3 z) G
2 _* A7 b- M. G! N- A: R! ?( p9 V! }3 C; G; S' p$ m; r! L
; A# k6 `+ r# t* t+ H' ?
9 ~" _& S: ~1 b3 s3 {4 f
7 `, d& d* y, }% i8 J$ s- t- B总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。
! ^) K# J: C. {5 X! a" U k" g) z6 A3 ]
. ?7 p1 k6 b$ o; N' i3 l% N( F
0 U$ ?4 \! j1 c- W$ b# n
6 f1 c3 W9 L( k: B3 w; f: g; x以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
- r* X2 Q0 i T1 }6 ]8 |+ W" w% h [$ I) l
$ z8 D) Z6 O2 r- ^4 p |
|