|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
2 R5 M& q6 x2 G. O, `8 w5 K b2 X' D0 Y F/ R, E. T( U4 a. U8 k9 A
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。* P& e& D/ T) H" S0 a; f/ n
0 |( j0 p' C d2 h) o一、修改工程配置
8 M3 g( U. E6 B; @4 vStep 1:
# E# k1 K! q; F) f; U' D打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
7 z: P5 N5 W1 m) n7 w0 m
' }3 [. G" e- \" o3 {; P) J/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)
0 {5 c) T5 Q% _5 p/ m4 C( K 7 z7 |8 ^6 e4 _/ [5 x) ]
( `5 f5 O/ }+ G$ p& ~0 W4 x
/ n0 T( i. C* D) q [backcolor=rgba(18, 18, 18, 0.5)]
- j6 m2 }/ a* l4 U& ?4 C
5 Q( K' K! k! H& |3 r& T h; \ 3 {. A4 p! w. _6 Z3 ?( h; K
* v( L" t {" W: S
5 w; e% l0 _% y- ^$ O: j编辑切换为居中
+ _! l2 ~8 \- i) e
' L t K: W2 v8 @% G0 \; t! j7 }& U* Y. t9 k: ~& V
5 O" Z" s# S. c: A1 n3 e9 ?- r& Z' \) X0 t
添加图片注释,不超过 140 字(可选)
4 ^5 ?6 v) V8 k9 t
# z* l' |/ x: A) |' L1 M( ?: X
$ O1 ?5 `4 |, A' Z/ o" X X$ M" `" ?# B
* B+ h0 n1 c3 | \$ J; GStep 2:
7 I3 x- w5 a; z依次点击【工具→选项→构建和运行】2 E; x, o8 J- _4 Z' D
! ?& I* p! ^5 _# f5 x- r' y
再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。2 X2 v' U: u& r: f8 |) v/ t( y
) J [8 J9 H! Y% E
. `) J' u% O& X2 c- i% q/ u# |/ ~5 F8 v) K$ \' x5 l- e
5 c& i; S7 Y0 ~1 ~* L1 b u, Y [backcolor=rgba(18, 18, 18, 0.5)]
% g$ r- ~" Z4 P2 V: T0 M( _( B9 z9 B
- `8 U. e9 y9 y( x( x+ T8 J& q5 v- {, P/ M1 S
" H$ }6 v4 @2 j, {
编辑切换为居中2 I0 q( f3 ^' R$ R0 V
9 Z' w4 q3 U7 ?# [9 c1 s
7 b; h. [2 |" F8 r' o8 d
3 `8 w& T3 ?$ t. u5 Q$ [& m
0 s+ f8 C8 b$ Y8 v' C$ C: _0 o; k添加图片注释,不超过 140 字(可选)2 [$ Z; ]4 v h
1 E: o, y, P" Q# \6 M N
8 P! \9 N% Y6 o" t
1 i, t: L( F4 h: Q$ \+ P. ~% m2 q- `: d0 H4 u% E( S" V
Step 3:
W! r8 Z9 ~9 T* `) J点击【工具→选项】
7 {* F! \# v5 @! u* m' N& H
0 z9 R& h; O& L9 L Q在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
: E( ^9 w) F8 t: n. B: a" L+ U7 A
3 a6 z: f3 D6 `, V1 E, l, W/ I& b! C
: k$ y! ~: w# G7 @) f1 o
- S5 r6 _3 x1 t n& x
[backcolor=rgba(18, 18, 18, 0.5)]
* |. Z" J: [) z( y: a/ C+ A
6 O' N+ A' B# A+ Z 0 T. \' Q7 ~' ]8 H
o& _6 Y. O6 e5 B5 R8 S5 K' k& |5 z, S& ]2 B* m3 e+ l
编辑切换为居中
& Y/ T) a" p2 y+ v9 u' L1 q4 d% r7 O8 Z
# B9 A" U" F; s5 d
4 \5 q/ J$ `" C5 ~% ~5 I9 t
) ^- T, q1 Z% U& ]' m" L5 b! r- B添加图片注释,不超过 140 字(可选)
A. ^, A; D3 `4 d4 }* ~1 f$ s; \3 e) }+ `' X$ C
$ G, L1 z9 h9 n/ B7 Q; r, e' z% y1 a$ V$ k6 v% n: `
& n3 |' B) |9 m0 u& w, V: ^, i
. f* ~/ c* x& V1 [
! j$ Z R" i x% R5 l# j& `6 u7 N
6 z1 a! ]. \' }0 y7 K" Y9 V [backcolor=rgba(18, 18, 18, 0.5)]
- \% t4 o) u r# Z. d. d: K8 `# `" _) ~
: z( E. n# w; _ / u8 o H+ t% n f7 \: _
* D3 T; |. H4 m X+ O
' H3 @0 P Y2 v+ ?) o
编辑切换为居中
- F8 s7 R4 q! t% L8 l& {! k/ M% S- w; c
& ^4 _! S" ?* w# ?' m5 `6 L% G
3 O& A* y) s8 V+ [/ ?; [6 E
5 Z8 q% X2 W% A" [0 E- t" {9 [添加图片注释,不超过 140 字(可选)
* ]4 V. u. g$ ]% `4 O1 ~: o9 F; F/ ?3 M
' \* {2 I$ {# D+ ?5 j) y: ]
2 t" B U* L4 s. j7 ` Z4 ]/ l/ q" d! Y( O' o+ L- S
到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
5 E% p% X1 `% H' t8 j" \! ]( e
9 l" i$ y7 H1 L$ o+ x. a1.设置账号密码:adduser+账号passwd+密码
6 t8 D! c4 g1 O# h% T
( U a2 [4 V3 [2 _% r2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出8 g! t# }% y" s9 |8 c' f
9 L/ e, z2 m: j7 E
3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务4 l3 v: Q9 J: _. R/ `; z
3 V4 @* E1 `# ~% C- x
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
5 F7 n0 F0 Q6 X/ _: L! ~( P6 e% q% g2 o8 a1 i) Z8 y5 b% N
Step 4:
2 ~- n _/ o8 L: V2 @/ A, G指定目标文件路径
* `& _" j0 b5 P& `& S$ b
0 C0 M8 R1 k1 e6 d" |6 G' u2 y- E在项目这个地方选择的存放路径要在.pro文件中声明。
8 c D, r! \4 \' Q
; E& I* `: A) v, [$ q& m4 L+ }7 `, Z8 _- b" P6 m7 ~0 t
7 E2 Y1 |( v- U8 j2 ?
% ~* W- a/ t. V [backcolor=rgba(18, 18, 18, 0.5)]
5 h7 Z( j( c; K4 v9 N! w2 Q! s8 b/ s t r0 _, H
+ V0 @- v$ m: ~4 H- ?. A& I/ W
, Q# F; Q6 O) p% O" \& J* ]( a; t3 x* ]6 H0 |' ]- \
编辑切换为居中
; B- r! F+ Z+ t6 ~' C
% y4 r |9 i8 K+ h3 L7 I& }! W6 ?
, c+ d. |8 @- u0 U
& Y6 {- ?2 S7 n$ J
) g% F( v. E. a/ R" V添加图片注释,不超过 140 字(可选)) P* X4 G% Z- D# c( o
' D" j! N H9 G! q6 \
; G9 |, {: a; O# }
4 g1 S4 g' Q Y* q, j, y+ t( ?
( Q3 ?5 G7 G0 T- n* {3 E. j% ^+ O
5 i2 P& \7 n* R! r# G N4 Q9 ~* u
8 P' f5 Y. J1 g4 g; I
9 e: ]1 { F: A& t1 z. S* z m$ W [backcolor=rgba(18, 18, 18, 0.5)]
1 o2 C# T, |! e' v- m. Z5 P9 n- u$ t7 O* ~- Q
& ^& ^4 Q( u) }! ]7 d
+ e" x. [4 g! ]0 N& N$ B# u8 X5 i& {* [5 B0 Z1 x7 e8 g
编辑切换为居中3 c7 I# R" ^$ J
$ Z9 N8 m4 |4 V1 y8 T# K! J3 ^8 z& n! |# V
3 w2 w* F% `) E) j. U Y
$ z- Q" f F! V$ U% o" `0 f
添加图片注释,不超过 140 字(可选)3 S3 N8 E% g' U5 L" S* k7 [1 Y
/ S5 g1 m: ~% v# M
: B+ u, z# {; A' {6 x$ U! n8 r
1 E, `5 V. F1 }+ i' k5 _+ Q
- I. P1 P6 _" S8 N0 b6 B
5 |2 Z& ?& @/ V3 v7 X# k: B5 ^ t& j$ a: [8 C8 m- Q. O9 m
8 G8 O x: y( Q! r1 [1 ^* |. A) H二、成果展示 % o* a9 X9 {& S( \/ {
按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。
6 {. U9 s' p3 C2 X, ~. q+ n% A7 h& C0 c* J
) n* Q7 D L5 m. \0 Y
2 `! r2 E/ ? J4 _$ c- j
1 c6 K- I1 n$ j/ }/ r, W [backcolor=rgba(18, 18, 18, 0.5)]5 G) _! ]( K9 j
" d0 c$ l8 d( {' L' L0 e5 g' P
, R+ E3 o. J9 o/ p
& n& y$ @# |! ]' I, p0 ?; H& y; w x9 s4 J% z [. S
编辑切换为居中9 S+ _2 b$ x ?' i6 Q+ l
; t6 D- M) K1 p
( [8 B6 F1 ]% ?: B
4 i" P& O5 C$ O; A
3 I; [ M' q" n$ ]- ~% y$ W添加图片注释,不超过 140 字(可选)7 e$ d: z; A6 |+ i, l
6 ~8 a' u+ ?1 x) n- p" g u( Y' Y' ^5 m
1 A# v6 W+ Q/ M6 ], R; C( u( b
1 a( m1 \2 ~! q, k8 a
屏幕显示:+ ^) |. U7 j) i& H
. z: C1 W+ ]: R1 I& [/ Y9 m/ B5 n) P z. o
2 K5 \8 h( K. P9 T2 `
+ c* D1 K% y+ q- r$ P0 z) A8 c [backcolor=rgba(18, 18, 18, 0.5)]
6 x$ s @/ k8 o1 F& [3 `8 A( @4 ?4 [& `' G# Q. q9 A
+ K, f3 {# Z% @( @
6 g1 Z7 ?* |( e9 U+ E: ^2 A$ K' f0 I/ T9 X) ?1 D' Z, P
编辑切换为居中4 W% B+ E' x6 E3 f& g6 N% G+ r8 n' T
+ N4 x3 x! C' Y4 r: ~, ^* Y8 p1 ^/ o# t. i4 n7 ~
( m, M K6 d9 \+ Z2 d! U- f
& j/ ?0 n; [2 R
添加图片注释,不超过 140 字(可选)
) j% M2 m0 @4 m2 h/ L0 ~9 x9 r( r3 G% f
0 q G( o- Q9 C9 o* l3 k$ y) i: X& c+ ]1 I; w# L( n0 ~
7 i" ^1 z& A2 _. V5 o
模拟研发人员进行增删:
( `$ r& i! V# Y' x% Y/ T8 ~# t& X. u0 D
3 s: K; k4 m5 K) J" L2 U1 R* E' B5 Y0 i7 V, Q% I, T
/ ?+ L# X2 B9 o+ S2 [$ Y
[backcolor=rgba(18, 18, 18, 0.5)]
) X, n5 \9 d8 H# d; k4 W7 O) y4 i( \) G- f# S" S3 d7 J
; F4 p: P' Z4 i6 C+ {- V6 j
9 ^: [5 F" Y" B! X. \9 N- g
$ a9 B& |' e5 l编辑切换为居中, z6 b- U. E, l: L7 j
7 X) H* T) ?! }4 ?: \
, u8 l$ h b* O; N
: U- J! t3 Z% M0 g# y
b+ o- g6 t9 H2 O6 s6 w; Z添加图片注释,不超过 140 字(可选)
6 P) A+ X6 l+ U- t' A2 `/ w- E! V4 w' s3 g& x) n4 F& l* b' \. Q
I* q5 L2 T& i* p- `8 Z: i
' z8 \$ y$ s1 [, o Y7 `
. o0 D- T9 \; W7 U0 m屏幕显示:5 k% r6 L( D a* H0 |) K
- g, r4 k# }$ [, h- `) ]
1 v/ P2 J/ e! l: E' l2 R
- K4 I% [* H, K. Y; Q- R( i |9 l+ b- X8 F% E- a" Q4 c
[backcolor=rgba(18, 18, 18, 0.5)]4 U5 Y4 H; F' Q' k1 N
1 R) j y7 s1 K$ I
+ r: q7 l2 Q$ x; j. i
$ K* k9 J" U+ T% Z7 i
4 i, V9 m1 o I3 ]& u编辑切换为居中
# j) T+ y ]8 `6 @% i2 p
6 F( q8 A/ o! z4 E4 ?' W: I# J1 C: J: V% q/ R" ^ G' T
( n3 o3 P6 ~( L* Q3 R& O+ u' M# X7 y; Y! j
添加图片注释,不超过 140 字(可选)
8 G* v+ L4 ^8 F$ f- E/ W$ m9 L
$ D! B; b: P2 m2 q. {3 k7 {6 w2 H- _+ B8 l- B* M! M8 f! \5 W7 g
! \3 N7 h0 o k5 C. l# n0 l
; P. F$ ^5 A; Q7 R5 Z( R% \可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。
! ?. z* d( l3 o" X) p! \6 I$ `( B% a( R$ ?0 J# ~, ~
三、经验分享 ' e' W7 {- T& ]* [9 c0 s Z v
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。
! R1 G) c# k1 T$ p0 n1 r) T
7 V. J9 `$ v- X& n$ B% G1.“连接错误”问题4 @ X; ?8 w" _# C# |2 d
1 W& Y: k2 S) O! O/ m& b/ q+ e- A/ ]7 K K
/ [1 z5 \7 Q1 x) W" n
1 s" L: E! d* f6 I4 H1 i; M( j [backcolor=rgba(18, 18, 18, 0.5)]" A. J* \& a# ?+ n3 @/ T
- L. B' _7 \) q! a. l4 _$ r" J! L
" u/ Z# C+ g: w6 Z
. Z5 I! j/ w+ P- l: }
/ q4 }+ m; X7 `" y3 d. I编辑
& \0 y! g+ M. z# k3 d0 h* S% H
7 ^5 W/ t9 o( m: [) X6 Z7 o$ G5 K$ u; N$ H
3 ]& }8 m1 k! u c8 x! k8 x
, k" n: i$ |$ J o添加图片注释,不超过 140 字(可选)1 i/ k X% n! x w0 j( A# N
' E' V* K7 S% B% H3 B/ F \* `
' f$ A1 a* r$ V4 n+ [0 H% V _
. R0 U x( h6 f! G* g; }$ \( g, u0 W0 S
2.“部署失败”问题; O# b& h. j, K4 P0 [
3 B8 k+ r6 c" j; B; {- a, y
6 u! @1 C/ y* V4 {
8 X4 p: J- F- ~% y5 i
3 r, w0 s q. ^ ]. O9 q' T$ d [backcolor=rgba(18, 18, 18, 0.5)]
9 Q4 d. V* B9 ]0 U% U" j0 n& k7 P; y, a
/ L8 s5 ?+ |9 N$ c. K
; \; d; H0 p6 E7 C; g
9 |6 E! @6 j3 ~1 I编辑切换为居中; t2 f. l* u# Q* W) U4 x/ \# v7 y
3 a* n; Z1 X+ A4 n6 F1 A
: L4 B1 a* K! Q- w* H8 Q
: n+ I# r' Y- V, b: |
8 m2 ^8 ^: \3 R# D: \
添加图片注释,不超过 140 字(可选)
, `; j+ l, {6 E" S* u- X- ~& P4 P, A5 M' f/ ]
" x; s E0 e% r& f
4 g# y. I3 U6 L' H: k" p" m# d3 t, O! H
" T' j- y1 o" o. v3 c6 e, l9 u3 w出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
2 M7 J+ S9 {+ I9 ]' t: _8 Z
% \- C" \) Y! r5 c: X# A- U
. P- i) T5 \2 b8 w/ H& m, j
5 d" t3 F2 T7 z& w
& V6 C1 R* _/ H X3 o' T* { [backcolor=rgba(18, 18, 18, 0.5)]
5 o7 F% C' ~) |. f: H" N3 J% O, a- X8 o7 w
$ M. H; t) i- ^9 {' `* L' q
& S5 u9 M" }/ Q
8 C p7 _2 m* j5 W, w编辑切换为居中
" ~, G4 M( ^8 t8 {- R' v+ u
, o% {. |1 W% G; L: }4 F( @3 ?1 Y6 v' U& H
6 B' R/ |+ U4 d" f" k0 c
% \2 D0 T1 D5 {
添加图片注释,不超过 140 字(可选)
5 G3 I0 Z3 ]3 q$ J& G+ ]/ ~4 J) |# z+ A/ K
# O( v" y: f. d# {* C+ H) ^- ~/ I! u- R3 {8 F
# {" O' t$ c, ~8 j) g3 t' R" p四、总结. t3 h/ f7 n* K9 y& X& A% Z0 m7 }
2 {3 U. ^' ?% s, L+ ^7 {# Z7 P0 Q; F2 [, X$ {3 C e
' q A0 i$ `1 x/ {8 ~ S+ y
; I' v+ S, D( _( @" ?7 A7 p8 O/ Q/ l- v1 r
. s7 C3 }3 }' b: m7 U A. q6 F1 J
总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。5 M, F5 f% h! G! r: E5 I4 E A
+ T! M) h1 E0 o2 D+ q7 r$ N: H3 B8 m2 j: Q- p! o
/ |6 D, N/ f" x* I/ |9 d; E
h/ ~2 b! y- d5 R c" _, n
以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
: Q4 l/ G$ `! E# x/ O% Z0 Y6 q
0 z8 y6 @5 ]$ X# k/ H- a# v* O9 p1 ]; s% o: a
|
|