|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
0 p+ U% Q0 F" L) k, p$ m' D- j8 a) B1 Z& f9 N0 t
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。9 G# r' p2 Z0 C4 C: q7 h
+ b+ |' t4 s, t& _: A2 i一、修改工程配置
. P0 x" c9 s0 W- ~9 ~Step 1:7 T% M- s1 n4 @+ d) T; z
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
5 {" }9 T! L& I/ g' x
& I! {, W( j& [7 X/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异), ?8 h0 e$ U% B( R' S! s' S, U; ?" B- K
$ X* L- E) l1 l$ J5 q( s$ H2 g
: B6 S& J! O! x8 w
: _& R. `* S3 p$ f$ P, h
[backcolor=rgba(18, 18, 18, 0.5)]
7 ^. Q) C+ L# o0 y
* t& F1 S2 C* g5 q, Y
9 p# p. r& d, C2 C+ B
7 s: A4 i* p: T# b7 V6 s) O: ?6 z ?# N8 j0 p. G
编辑切换为居中
+ P: g: U( `& t: b' x* R7 H; p4 c# u
6 @; G8 Z; _+ v/ Y" \; v$ q% g/ P3 Q* |2 p
0 a' X" p* d; @" H- I/ t5 |. I9 f. _
' y9 x6 k2 D, V添加图片注释,不超过 140 字(可选)
, v; h3 G0 _! U K+ a! \/ F1 x
5 R# a) v M6 l: G/ K; x: s; w3 p) W; ~) g; T$ r! n& h5 x
) n3 G0 M/ o4 {0 ?2 c' |' b
. u/ s6 i& j+ D6 j8 ^ d, n1 H) m
Step 2:; z# @5 h0 e6 T
依次点击【工具→选项→构建和运行】) z0 B4 `! z$ R8 Q# i& d
6 k. ~) }" ?# L& L再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。) v- D! @( F; |. y
* p; }2 N* ~- X: Y% S+ q; k0 V% u) H% ]' D9 A) G& u5 [% ?- i" q
4 H8 U5 X6 J/ h$ c: @: U
- k$ k1 |% V I3 L0 m [backcolor=rgba(18, 18, 18, 0.5)]
6 m% N* b$ z3 }6 ?8 `( q
& c$ D& e8 M# Q# C$ g9 l $ `- S/ G- K1 `
' ]5 d% d% m! h6 [' a5 A* ?
9 t8 j8 N1 f. c5 N编辑切换为居中7 g: P Z2 g3 _
D& K0 x |( x
' r: v* @7 b' _0 \1 J; k0 n4 W; e+ a6 M( T5 S
! K4 P' A( B: h8 M& ?
添加图片注释,不超过 140 字(可选)
1 d' W3 s# T' H5 ]( [
2 a' s7 E+ K6 m0 q b8 X, H& _+ d$ X. h1 }0 V% ~( {1 @
6 V7 l4 x I( n4 E
6 Z& B3 W8 l) NStep 3:
X! @. c1 |0 ?' J5 k+ m& `6 S点击【工具→选项】- ^$ z, A( J# E' r6 L3 a
- n9 |' |& Q" O: I/ G9 h! ]! }
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
e8 c1 P k" H+ R% ^, p% n m$ r; r: b1 h
+ t, F0 R# `$ W! \
. w9 X: R9 A, n" `( b6 r( R
6 G# D, W; Q3 S
[backcolor=rgba(18, 18, 18, 0.5)]& h" i( Z5 g) M Z& ]
( t# w1 G/ ^( Q* `5 ?
, z( l9 T0 U1 q* W( W* K1 j
4 l0 l+ C$ v4 u7 @5 N" ^+ g* f! I" s' B' ]% U
编辑切换为居中
4 b# `( P |% R6 g [+ B: C" y
6 V/ n* f, O2 r' w- {9 X" _( |% ~/ U9 i, l
. \) b* S4 I4 _) e w+ F
9 B+ D% b) v* {添加图片注释,不超过 140 字(可选)+ q9 _) |2 V& {4 G' \
# h& u6 v6 G/ D4 i9 g6 y
5 q* p- O) n( U) f4 a3 ^
7 v4 c% ^( X' l( A* ~
/ c! m9 Q; L6 U
t$ R& u# w# L) h# G$ x% x* H8 U+ @) v5 k$ H ~2 r
4 P; g/ K% y. w
[backcolor=rgba(18, 18, 18, 0.5)]. s2 \* j- c3 r8 O0 B0 r4 {8 d
& O7 a2 R+ O D
% q" C' D6 l# `, r* W( B& W3 U. C. S4 C" N
% N& L4 ]. g/ ^* `
编辑切换为居中
% R% Y# l9 E8 U" [, k' I, t: P- q% {# f$ O* n6 e6 y' v( k9 ^ p
# D9 @4 e9 |3 h& U& f8 I. H
V9 [: N( j9 ^" G: o, w4 Y! R1 p, D, W6 n3 U2 T! a' ]4 P
添加图片注释,不超过 140 字(可选)$ R4 }5 S/ d3 a& y" l" b2 R
& o8 `3 M; V+ Z7 @6 d+ O
8 l# P/ q# a" G9 _
$ |7 j7 ]4 J s! I) o! e8 D, l: j( W2 N! H
到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
; @+ Z* B. {: T& e
0 o4 D: _, v G4 Q1 X1.设置账号密码:adduser+账号passwd+密码
" E( }8 R+ P$ l7 f* g2 q W' j9 }" g& ^) R
2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
0 a! ] c: j) Z a6 Q3 Z* H; J+ s" V5 g
3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务3 z' C' P8 V0 P) r( ?
3 G' t) g7 o4 l$ @! _
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP- p/ y" \, j8 E# E% u1 I9 L
8 @1 G6 J+ `& X, l, b. n- k" c
Step 4:7 m! }1 M: Q; X7 @* S" z2 H9 @3 p
指定目标文件路径
- H0 O' `! C! j
5 }& ]: d4 Z; W8 S/ {; w在项目这个地方选择的存放路径要在.pro文件中声明。
& c0 m N6 l5 ^1 G+ m( K4 G: {& [
. K( y$ I7 M q' X8 c* M
" c& S- J$ {2 o' n5 U/ D! j5 @" I; K- r, y
[backcolor=rgba(18, 18, 18, 0.5)] V& \) j6 D$ s& ?! O0 [
' U4 o" T/ R6 T. d2 t ! t( ^2 L" N. y: Y" {
" i' [: w7 T0 B i. q$ ^& ^3 ]- g& U& I5 A1 }# H k& l( l
编辑切换为居中
3 g$ s4 B; t! D6 Z5 A# @) M2 W: F c/ n5 H6 U
% b( ^9 T- g- }1 z' e* X" k. d1 Q
% F4 Q: ]7 ^. }6 h添加图片注释,不超过 140 字(可选)
) G) T U2 ? T- {$ f4 a! @- @: d h2 B
3 I1 a1 k9 M8 V- A* U9 H( z# u$ v4 i# Q
: T5 [% F; [ a4 l9 B* E' C
4 f3 K& ^$ E* _% _) }
/ V: R q! [0 Z* z1 g# c, f t- ~3 m+ M: i; k- ]% [/ F6 z# P
[backcolor=rgba(18, 18, 18, 0.5)]7 X, g5 {: Y$ x- W
Y$ u9 V8 v5 I& r! ]* t; \
- k! e. q% H2 ?3 }# j6 j' m
. Z% A+ o8 A3 z
& v- v8 P, \0 ]3 B编辑切换为居中
) {1 s4 l- P6 U( {) p; f
! K. Z' ], h/ e9 O6 g: R
/ m* \" V; E0 ~; o) i7 D# c! @- }& x3 U/ n
/ w0 R+ x! }+ y5 x1 C添加图片注释,不超过 140 字(可选)9 P/ j. y# `0 @+ I, N" _7 c, j% x
9 l- h; \4 M7 |/ w6 P+ f, x6 y, K
( ~1 T5 P( D& V9 P, E0 w+ v" s! [! A7 B+ @
9 v6 x' R$ M/ z. j/ [) ^
+ G0 g" L$ G& {# E9 O* i; G
; y- T+ a% [7 A& f6 s! {, h) I) r. ?) @! S1 |* J7 H
二、成果展示
9 t, C0 ]; p3 m( F按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。
4 a* H6 D2 G/ y* j; N. I4 |6 }" s, x/ D! Q0 X7 c6 [
1 E: Z" Z8 @" m ?- c" Q3 u9 Q ?# |
1 R2 j, a& N% F& l | H
9 F, v/ n% Z8 q) a2 } [backcolor=rgba(18, 18, 18, 0.5)]
& D% P4 j1 a, A5 q
- @+ f3 z! `! R4 d$ r% Y$ C5 h * r. a5 F+ T7 a8 u: r7 w4 ]+ h# `
; x0 n# L* h6 V7 Z# U' H, u- u! z' g
8 J& O- N9 r7 W: B, n6 `编辑切换为居中. _7 ~3 q% {+ u% k5 Z
: y3 _+ ]7 X) s! m% K& t; O) g0 O) k
0 E. B3 {# O. S9 W
" G( r" ~: [- J+ l$ H3 R
# H& G5 O% O1 u6 w# @添加图片注释,不超过 140 字(可选) ~4 b8 `2 x+ L* W' z# Z
2 o3 K9 V# E0 M8 T5 e
1 P0 q: Q4 L0 r3 X1 B: ^9 V
! {8 V$ i; J- Q) V4 F; _3 I& w3 |+ {
+ p8 }4 @1 Z- C6 c6 F8 y: W# C屏幕显示:$ A9 W5 h/ {9 @$ O7 }) |5 h
# V% g( d* b Y; U
0 T% {& Q5 B4 v1 S% R' v: r" e8 i0 W. W5 ?* V0 g
& E- P- U# c+ Z$ ^" r4 `4 Q5 u- Y
[backcolor=rgba(18, 18, 18, 0.5)]
( v g4 W4 I# L5 a1 \$ ^# u7 P& o6 D7 T* p9 C1 F
9 w6 H4 p7 [0 y) {- O% e3 F1 s, z4 o5 e& y* ~2 q/ L
4 h# k# A. Y; h. n5 n9 I编辑切换为居中
4 _' d1 ?9 P6 s9 U$ ~9 Y% D" I4 @ z4 A/ s
. H* k/ v# B9 G* F$ G0 I2 W0 t ~- [5 B
. p/ e; A6 I) K/ I; b
添加图片注释,不超过 140 字(可选)
6 A3 l( E* ?! u: w
6 ^% a M0 \8 a. E, ]" Q4 {5 Y8 c: t$ _+ @ {( U
) }% L p) q7 ] r W6 \! k" L) g2 T1 ]
! o* U$ F7 @) m' H- B& n) H
模拟研发人员进行增删:2 g6 z2 k& Q* v7 {
+ F6 o8 J: N( s$ F- z
! M5 ~' l! k3 F: s7 a) r( w
: `0 Q, a7 k7 Q. `$ a
- D+ r6 f" Y3 F) h9 ^ P [backcolor=rgba(18, 18, 18, 0.5)] {) v4 ?& x' O1 w
! W; r/ A$ f# Z
: v4 v$ p7 ~% O( [$ }
: c( J' O! c( g% i. t: A( I% [
+ R' Q( ^8 m# _! u% {) ]编辑切换为居中/ g9 T- K6 x2 o' k$ z9 l+ t- y
8 ]1 \# o' q/ v# V% P
+ D, i2 f+ @ Z4 k, g# L
; P3 H. H1 |+ X4 f
0 g: D" H% `9 l7 n( i添加图片注释,不超过 140 字(可选)7 ]/ V& M$ h A( a& T1 v
& Q9 J4 ] g- e" O# T' m/ Z$ G
/ K% h4 e8 Q, P; u; H4 W
9 O4 ^: U* @ W4 p8 u/ A3 i/ P2 ]0 c G
屏幕显示:) J6 z0 N. B7 E, g
; E% A1 L* Z3 S7 ~3 n( U2 D
' ?# y. D' M6 V: D3 @& v
! r" f, L! [0 Y2 B
& T% {, H- K! L& m2 f, e) T% r [backcolor=rgba(18, 18, 18, 0.5)]
- S# M$ e* R/ U. [
/ |: c3 N- k' b5 _ T4 Z+ a5 ]1 \, ?) q
4 Z& t% V9 ?, K( c
+ Y2 j2 R+ B, U, g: G$ J# k
编辑切换为居中
& s2 k# {! K7 J4 S" S6 ?6 H6 B1 C2 k$ k5 E: A: Q
/ D& w4 l5 s0 m r5 H0 {; T* _" h I. t E/ b7 `0 V. D
4 V/ d2 d9 E8 S- k/ `% o" g$ V
添加图片注释,不超过 140 字(可选)( F' M- D9 F/ v' z4 i
, O" P% e* W3 n0 u, J# @
! t' j! q9 A% \# J
4 t' i6 S( |& i, F5 \' a5 L) Q. `8 T' r
可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。" G3 u0 q' k9 [7 b" D
! t& }. J1 t. Y$ S5 Z/ L
三、经验分享
' ^4 A. M* r2 O _, j* f- E在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。
( k$ n: z- Z5 o- v. X' _/ R( U' ?3 k
1.“连接错误”问题* Z( ^2 \. u% f$ |! T
8 ^4 F+ t3 W6 l* T4 N
/ P. ]6 K; ^5 {4 Z3 _! V1 a
0 i% k$ j( ]2 ]2 {4 i7 f" j* H# g8 j' M% v
[backcolor=rgba(18, 18, 18, 0.5)]
9 e1 \8 g; m' {3 U6 j( r
& F/ m& [% b9 a( S
7 J3 n: e/ i) k7 P& O! H! n; o5 Q# C; H
, D0 V7 H! I3 K- }3 ]) W* Q编辑4 ~' D% T( V! k4 N
7 _/ m3 S( g! e: e: r s5 {0 h6 V1 \
/ L$ W& v" F6 D9 p. Y! O* b, V
! S( _7 v2 T3 d5 f( D
, k. x( V/ A1 A) M# L3 H# D添加图片注释,不超过 140 字(可选)
: S2 ^4 T! w ~! R- n E+ P4 T- _" k' Q2 @% n: d
' r/ g4 |" j; k: O- l& ]
! c! o8 w2 d3 P& i7 Y3 G: K0 R. ^. n6 Y5 v2 }
2.“部署失败”问题
. [+ B. z6 U# ]1 i4 H: t: U* Z; X' V$ `, w1 j
% ~& R8 u. d9 s0 y
6 E# i' n6 g8 X8 Q' S# _' j( j# N
1 o% ?' s, R5 U$ l
[backcolor=rgba(18, 18, 18, 0.5)]
# f! _3 O! X: x" m! `; {
) `2 X0 p9 t% B- v
* {4 d e( ^( b& Q$ k! w% i4 H+ f* |! k4 d
0 L7 j5 ^+ W# u( U2 o- J2 F4 R编辑切换为居中- m% O& ]: s, R# Y6 I6 r5 |
! Q2 [1 R) A4 ^9 J( ~
6 [; A! x' S$ B; [
6 X+ K- X1 ^/ E/ s
) ^! u- d! h/ Y2 {/ Q6 _添加图片注释,不超过 140 字(可选)2 l* p- x8 i+ M
1 F3 Y9 p, ]+ k0 c9 s- f8 @
7 b7 q. j' l& L- Q. R# h8 L9 J& _
' @5 k3 o$ U* R, B$ M3 a% v
出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。9 [: F& E3 e: `; I
* |& P+ ~# y- i- c
- r" q$ x; t5 S& G; Q% S# z
* `" @3 P9 ]/ Z7 s. G- a
' {9 s% A+ E+ D4 `- H8 g" _3 b [backcolor=rgba(18, 18, 18, 0.5)]1 X2 |8 V; G( x0 x; ]6 o
( W! i1 L6 I1 G1 l' E% ^4 L
4 M3 A9 Q: @7 S, ~! p- A' V/ C$ e3 p, r7 T7 M4 |
# e* b1 k! r8 ~! x% v% f编辑切换为居中2 _; F+ b" F+ k
: ~$ K" J& ~" L i& P y2 j; ^) \: Q3 ~. D, r6 S Q
0 }9 o- C0 F; {" A. I1 \& w2 ]# d' {3 w9 E+ K% p0 U. |
添加图片注释,不超过 140 字(可选)
( z% K( M3 Y( @: }( ] C* @7 m$ `$ W/ M# _- ]5 ?: D8 Z0 g# t' z
) X. H" Y0 R3 @) Q) m2 g7 n
, F& V( j. @% r; w! H1 R
' y" s6 N: N% a4 u/ x四、总结
* Q( {& I+ P0 {3 X+ L' K+ c+ ]. ]) Z2 H: v5 |
1 y0 B$ ~0 v) l: T5 |
! ?6 W6 `2 X8 a( V; C4 p R2 l+ a4 I
$ `& ~9 V$ a5 G9 w F; L0 A/ [" Y; P; ]. b
, r) [9 |( n- S5 u; B+ s
: `( Z7 g4 y* l# E k
总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。
+ |9 K! r% O: l
* w4 E: r1 A, M5 i1 C/ m
% x7 }/ r2 `! t8 U% J* ^9 a( T7 P/ ~8 A* ]; N! f: l+ R, e& W( C
! A( t% A5 b, N: B( ?% F以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
( Z. c0 m% j- Z: n& `) w" ?5 }% ^# U: s% H% }0 b2 K8 ^3 _% T
8 o7 i, f: u: X6 D. m: U- D
|
|