|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。# C( v" b7 X; ^ B; f
, l p$ q4 o# {8 C5 M那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。
4 A/ z$ ^1 {1 e: j; }5 q ?5 u: [& a3 M* H ^
一、修改工程配置5 `0 [% e# @- Q' [. Q3 |
Step 1:2 Y ^9 m# ]; i. K1 M
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
: A- H/ b8 s P7 M+ H
$ n' g$ j ?: z7 u2 G0 L8 A9 b/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)# }3 @ r3 ]4 \6 m/ a4 d) s R
+ n/ P; ?& p0 S4 y8 D9 ?
1 { A$ B0 S9 x# {& Q! \5 j
- z5 o- J0 G& n3 S. t/ x9 a [backcolor=rgba(18, 18, 18, 0.5)]
9 L' L+ R+ `8 ?& r. o. q+ ~! B' {; ~" i( j2 A" V
# |& u" M3 U& o! ?; e
. L0 O$ y) x: y* @, ?* W2 d6 h, ^4 |& ]1 A
编辑切换为居中
1 G/ j) S4 I8 Z9 e1 C' S: H% u
8 k* Q1 w j' j9 N+ S E/ {' U9 [8 Q) S% ]& I5 ]- x% D: s
* B6 I) P0 p, V' {' y7 ^
- ~/ m8 J2 d, M! Y2 e) a8 `6 H1 S+ O7 V添加图片注释,不超过 140 字(可选)) R3 G; {# P) O* n2 f2 |& T
+ `. A1 p3 v2 _ q; z
6 ?- w$ K3 w" ^; \1 Z5 ]# h
" q5 r3 E& F4 j5 B5 T' O. e; n, n; t/ O5 ^
Step 2:$ ?, |# U }7 P2 z2 k
依次点击【工具→选项→构建和运行】
3 ^8 ?1 f5 G) |5 s' j
8 I9 b9 c- w$ M# Y4 X' R再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。* S2 M d8 D; M* i9 U4 t7 s. I8 ~
4 \1 a5 I3 z) F1 B- Y
* P( q; N- {3 i- n: Z" ?. ]" c
6 ?" G; e+ v6 B- s- Z/ v. Q6 d* b! ~
[backcolor=rgba(18, 18, 18, 0.5)]
, D$ L; g6 Z( ?5 \4 u/ w* S/ Y: g) p6 G) l6 ~! j
" a2 K- X1 a5 I3 r. t) Z/ K8 B5 _2 o4 i5 i6 s% o
5 A# M. p( N- I. O& d1 _$ {
编辑切换为居中( D4 m$ s V U0 L; A) g
8 t9 d6 t, y* t
) M6 O: J8 z7 T
) C! f4 J. {) u4 R4 z9 f6 b( e7 n |$ J" W- x
添加图片注释,不超过 140 字(可选) C+ ^, a! o" s- X. Y! |
: v0 f% n) X4 H% K
* C$ A( ^. m+ T- i* H" x' }. c$ ]/ m
( W0 d/ ]4 G. @0 X
$ k- t- s- a: c/ q/ UStep 3: N4 T" ]# B# J8 g9 f
点击【工具→选项】
c `4 L T9 T5 S% y" s" i7 K7 L1 b1 Q$ u$ V' k. N
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
- e" M. O% N2 k$ k8 E4 \9 t7 \3 c' M) S3 a
" ^5 ~) I3 `% T H w B- Z) t
( Q: J% J r. H9 y0 M1 c
( M. b. D8 m: {4 e+ o [backcolor=rgba(18, 18, 18, 0.5)]
4 c% i1 A, ]. g% x
* Q' t9 w$ C- m
+ D4 x' l$ h& p
2 t; f& M0 ` o# F; a, }* z
1 X, E( T( W( j2 {' [( B I编辑切换为居中& s1 o2 L% L( G! `+ r, I7 [
7 g9 v- I/ z" A3 N0 E( P3 |/ Q+ y
2 P6 V! J8 b! s) ]. U) ^, |
% f1 b( r5 @& D$ `( |2 H) @. E! {3 q+ D3 Y- R
添加图片注释,不超过 140 字(可选)
5 v7 M, \9 `9 w# e2 g: S* b1 L! [8 [
; O+ o5 O( O+ G4 b1 Q2 Z/ N ^
( s: D5 w) H, ^# W8 F C" Q' x! w x* T, O4 |% I
+ M, ?8 S# m% q3 A+ p
2 F8 O5 W3 r1 X& R& ]# `6 s3 X( t' F& c w9 q: S
1 @3 a$ E0 t$ y, N! y [backcolor=rgba(18, 18, 18, 0.5)]
3 s- s6 ]) V' F( ?0 @7 }$ e0 Q/ h4 l3 ^
( P) ~0 V$ `( w
3 b) l3 t* |$ T6 E* g7 F- y) b+ d4 s- t- u5 p6 H& `9 N9 \, d: |5 Z
编辑切换为居中* ^! {7 q- k! h+ T0 V ?
. A0 c5 B9 T0 v5 B$ Q$ L+ D0 X
% `& m) ]" S5 B. l& y/ ?- c9 l# j: B4 L. B. s7 }7 O
+ C, p1 _+ f5 h {. s添加图片注释,不超过 140 字(可选)
' x& F0 n( {4 o
# A) w. y" \3 M4 ?, I
$ ^) {: V. R8 H1 z2 M9 k2 f" E% n% Z# [ r' M9 S
& s5 R" `) K3 l到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
5 o3 J0 Q' X _' A% G- x3 H
$ O2 u- a5 A- ]( N' B' M6 M* C1.设置账号密码:adduser+账号passwd+密码% I! H& F$ b7 `1 Y' D
: c7 j8 a* s/ r2 q8 W( y4 _( s- i2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出2 ]0 I: W: L+ b7 Z
$ w6 o. E, S6 R) \3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务
4 \1 W, L( p S" C, M$ l1 T9 x% i4 T5 d
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
8 o: \+ t6 Y8 K, M% J# x8 o8 P1 y5 d- h, A
Step 4:
& [5 V9 Z; \1 k$ {& Y: u* W+ s指定目标文件路径
$ w0 c3 n7 R1 u. }$ S* K- q& q$ r$ J; g
在项目这个地方选择的存放路径要在.pro文件中声明。, k* ^$ k6 Q/ H. A0 l1 B* l% F
8 T0 v# D' E. m2 v- _* m- p/ e
' P" G* d8 m7 L3 ] G1 ]) h7 B# [
6 G( K3 V! J, G# T2 d2 M# V5 b$ F9 A' f/ i1 ^3 i# B* |
[backcolor=rgba(18, 18, 18, 0.5)]: K4 J, d$ }; N3 g g
N! [ A) l6 L1 _" ~5 K
. r% @! Y' B. R- `. f$ V. X8 u. [3 n9 r
) Z- U7 ]1 j5 D, r" q& w$ l. J
编辑切换为居中
+ w. ?) P7 f; Q* s& B
$ I6 k4 ^4 g- S5 k
3 R$ D6 E" u( ]8 w1 l
' c, Q1 g+ o# {4 A6 Z/ W* f4 |& B: R! y1 i9 G
添加图片注释,不超过 140 字(可选)
1 s4 d( i9 Y3 H9 F; S# |, w% ?: x9 {9 e1 c
# G& l7 Q& X2 e3 Q" E& A( \7 n
+ \1 S9 j( l* K$ d2 ?0 }; T4 E4 R% C" V2 U$ W
) d4 r! D+ o4 I& c( k
3 f9 i. l9 E4 w+ H0 k( R
8 W, G, J e. m! b [backcolor=rgba(18, 18, 18, 0.5)]
9 d" m. V* f2 L( g9 l5 E7 b$ a5 S
2 D5 E2 C( j3 y4 O; e2 `
4 k% l" |! h8 B: G" S
. @; t# F1 w( K
x( L! _* c3 q7 B8 g+ p: w/ r8 s编辑切换为居中
( T1 L# A( g* d3 T0 Y! t- v( W' f& A0 [
2 z( c) ]" Y2 w- M' l) N3 G' n
% A: k' @6 i1 Y
# H* u) {0 _, q% x
添加图片注释,不超过 140 字(可选)
9 i" Y- N9 J: @, j v& V* u9 m" @, A, v! ]" C) P
6 q. F( n$ n" v% y" Z T% m
. _- {, B1 W1 L; z0 M2 T7 H* r6 W: A( _, t7 y! `
" _; l) F3 @/ m5 }
0 o* `1 n) v1 e3 X) m8 d6 K* T3 G1 Z( E
二、成果展示
3 T8 C4 }2 k6 V {5 w R按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。
' d% C" T5 j, w1 F+ X# |, ^
: N! r }, B! |1 \5 _1 A+ b
f7 j6 k2 h J* d8 B5 X6 ?) _- t X- s2 h% X
5 J0 x# V( d8 L+ P4 k% d; q [backcolor=rgba(18, 18, 18, 0.5)] ~& s! S1 E' a9 _+ O! c# h
# n/ P+ i2 J! D8 Z. `" w! \
/ y( o: N' n8 P0 X% |0 I& T& S- q; y# `; Z" N4 y4 t/ x
. r4 K! ]* `# u. u' N
编辑切换为居中" ~$ M" Q* p- J+ R* U9 k9 `& e
& p; s* i G- u' y& y3 E/ S7 h
! c5 S$ V2 N1 i4 G% F$ X) v
2 F9 I6 W6 A) ?% k! M; c& i( D+ S5 p7 ^: Y. C; ?4 g
添加图片注释,不超过 140 字(可选)9 I8 v5 r! c, P$ a8 B* S6 s
; V v& K/ ~& T/ i0 m9 v7 A7 |1 D
# [ X. f: }; d
# @$ Y) C& i6 Y, y' M8 n
1 {% y. ^3 A O; V6 a! ]屏幕显示:) U, e/ x7 {# F; Y0 ^- u
6 t' u- \* X9 r7 e( L g3 R
* C/ [3 c4 _. i# ]/ g2 z8 Z0 Z0 @" |- Y7 `# e3 X2 E8 [9 ?: T1 G
9 h/ c3 _; y9 J) w& |& O( e [backcolor=rgba(18, 18, 18, 0.5)]
% k: |6 \* g) x. r/ e. s$ q5 j$ `
3 g& I/ y: C- {; ` - I$ @) X: J8 Q4 b/ d4 z/ L
2 A" |# L/ ?+ s
% O- @7 ]& j6 y7 k( ^编辑切换为居中
8 L5 A; B, j5 D: l0 ?( M* W, _2 v1 m0 B; g
7 } h) J3 D2 X ~7 P- y1 y# d* [2 ^: G7 b
0 R" k" H6 t3 S; o" ^* |
添加图片注释,不超过 140 字(可选)5 c9 G; {* c! j
5 G! S. Y8 |6 d
5 _" V4 {2 M5 u# e7 u, T: C$ w8 L9 y6 p0 R+ ?7 g! G2 d
6 V3 I/ K1 P& k3 b% O模拟研发人员进行增删:6 M7 F4 T% e! W9 i5 k& U+ `. v& X
. u3 V4 e" S3 i0 H" A, K
" |+ I/ D/ |! g; h. L5 J6 U! Z7 u
/ m7 l4 I! R0 Q1 j) g( n& i
$ r/ J: l0 `: U
[backcolor=rgba(18, 18, 18, 0.5)]$ g( A# N/ e" A$ `. {0 h
" ^4 I- H$ Z( S
G8 _$ ^. U* `+ e# r. Q% g
) _2 X- F0 j4 m0 n3 A# P
i4 ^2 T7 _2 y; N- a- ]
编辑切换为居中- z4 r4 z4 J4 M# d3 g) y# H
* O$ u$ j- ^" r$ b
' t+ `2 ^) S$ H8 b& S+ k
7 L; q @9 f3 {* `
& {% v$ W+ m" x, m6 ~添加图片注释,不超过 140 字(可选)
- }8 j. P. X( {3 O2 { z7 w9 D+ Z; b/ Q' f; ?7 `: Z& e I5 L
1 W: Z2 r* X2 L+ _
7 d+ {. m! l0 e, g# Z6 i
8 `2 X0 f$ X, M# A7 x3 I
屏幕显示:
1 E4 Z* ]2 I# R5 M7 a
& c9 k0 \+ y [9 K( \9 u% H& e9 b* u; j* y. }" g
4 A4 A; y3 m+ k: j: J
* {" i0 r& P9 T& d0 A
[backcolor=rgba(18, 18, 18, 0.5)]7 `; P0 V- U/ F) E0 l
. [+ r/ G5 U6 l9 q
2 A( V2 n7 h& ^- M# {% a: K8 D0 q! X# A: B* L
9 `/ [- E, n% N j* ~+ ?% q1 Q
编辑切换为居中( {/ D1 m& |0 m0 @7 E
6 [5 z" J2 k D9 k z
$ r/ Z* f$ u8 r" f
- V5 X4 @, F8 C; L" k# |4 w/ n; \, |9 j
添加图片注释,不超过 140 字(可选)" k* ]4 O- |% k1 a% ^
8 U S, G$ k7 o+ w
5 O- V& S( x f0 K$ M0 R0 v
9 i( i) D$ E/ W u3 P& R
' @4 y6 j7 ~9 U7 t @- A$ U3 Y6 d X可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。
5 l7 c& h$ O! ~$ {7 K. ?3 g/ J8 p" L
三、经验分享 % u5 i; v8 p+ L E: u
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。
7 C& z) X3 s7 S- y2 J$ `: g7 z" j7 X9 [- V) C, I
1.“连接错误”问题9 N% k; _" w5 I# T. `$ E# F3 L
. l: A" n. o7 A4 @
- k- R7 U) a: f& O. h- F
1 C3 F7 o/ H/ r2 V
% j# r3 C9 K- }0 k+ X, }+ C, D [backcolor=rgba(18, 18, 18, 0.5)]. p- X" O* e) x; I
+ X" c; c% T, U
# T( K- x) m8 u/ `3 x" Z1 y* m# X% W5 L% ~* T) E
% v. C9 V. U$ E2 j1 `2 J编辑
8 [; n* u5 r' i( w
$ i+ |( L# A* x. \9 R E0 A& e7 u2 a! v: Q, K; M
' Z. B2 M K5 l4 ~
& q# f; ]# y$ s) `( Z/ [0 q
添加图片注释,不超过 140 字(可选)2 F6 M6 W! _" |7 U! ^: d
+ a+ V5 H4 a7 N
, n; M8 h3 e" T* h! q/ ]. U4 y( X3 L" w3 b T
+ z1 L) P2 v- n: ^; F% i
2.“部署失败”问题
# i" C2 U C# |! B0 E
. G) t t1 E1 w! x" B5 N9 Y1 r9 N
3 W6 M$ \, [8 l$ U& H5 b1 p% M/ G6 l8 O3 v' ], y% ~6 ?
% {9 s/ u3 { H) E2 V4 P& A- [ [backcolor=rgba(18, 18, 18, 0.5)]% [6 @! e% k0 l7 U6 j' F# c# A
9 V+ x. T5 ]( b* B; z0 M
. R4 i- Q1 }/ r( d8 r- n! ~$ y, s$ K* M- o
9 h/ k b% F! M/ a- H! U& ?" i( S
编辑切换为居中
* A% s F( Z$ x+ m
: K: ^) A' Y" W9 D/ A- [, S, Y* T5 r6 H( h% ~$ H+ X6 z/ Y5 G
' K1 T& I. J8 e/ s! p* O# p# J6 ^5 g0 n
添加图片注释,不超过 140 字(可选)
0 E/ d- z0 N2 [2 h P, }0 A; ?/ V; F& J: s5 S) e- P# V' l' D
. C; F6 k1 W$ X `$ v( H' | R
) ^0 A3 s [! j6 f2 @
* `( {' S& g( ^: u$ z0 g6 Y出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
. b3 ~$ v' ?* T
/ E- j2 e5 K6 f) R& o9 b1 R$ u! i3 c( ~; J( P9 P8 F
2 ?0 |2 i9 P- z" A9 ^ ^
# G- }% K& X5 e; Z- K8 U7 q [backcolor=rgba(18, 18, 18, 0.5)]
2 G8 g# q5 O+ v- ]
, ^& ?) {! u. u" }5 @- O2 [ H
2 |& i1 A( N. ?/ i( i% ~8 f
9 g, d* Q2 w' L$ S: y+ d& F! ^! J+ O* u2 ~* p3 x9 V) [! T
编辑切换为居中
" \& C1 g/ @9 s- a) X7 f4 m' z6 g' f* l
, e7 M4 p* h' m/ N3 ^, E
) G; k; w+ D8 O h6 l! _; G- U) s
% b. O( a, s n9 U9 w
添加图片注释,不超过 140 字(可选)
) S5 ]0 m% g! m2 f3 W8 B+ Y1 Z
g1 s5 X2 o3 i/ E# C! {3 {; x$ x) \) g0 _( E( V
" X7 \( G9 H% E' A' q9 z, N$ b# @9 y$ _2 u( O
四、总结
, l( L- i/ e$ G; C
0 E2 y7 @/ V: b7 }/ }! r2 @$ B! r: s6 j. o/ F6 ~2 h* f1 L* m; N
7 o# B/ e: X6 W& |+ ^
) }3 z+ q# i6 y$ C! |. {" h
+ b0 u8 H9 p% N d3 S0 O7 g- f4 _' _& g0 C' w, v- I
2 C' k- D; \/ u7 Q) \3 w1 H$ Q: C
总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。$ @2 J/ |7 a0 W& e2 G( ~$ s
) B; p5 V8 r& Y2 V6 s- }
. J$ E1 a/ e. P1 O; t& @/ y
; F( _6 c% F% K, y P- `, l) k) c
1 y$ g0 h+ b) s0 H' P" a# ?: }以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。, @& }4 I/ i' ]: N
5 A/ Q3 C$ r; p3 `! K V! r
" s# A+ w1 f$ \5 G |
|