|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
5 k1 \; F f# r1 q+ k/ R% T( H" b. e& n. i' R3 H
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。
6 o6 \* I, F# J2 K! b& `& m1 Q7 j
一、修改工程配置$ p, f( q, t; g7 c
Step 1:; D9 _, w* l. M8 {2 p
打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
# ?9 E: r$ H6 x
2 Q$ i- ]. c2 I6 L2 J: p/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)# Q. b0 }/ S& n1 Y
8 m$ t! a: q* n& U' v
. T& u2 \6 m" u% `$ d1 J
/ f, x. t2 h( [9 {' g2 @6 z [backcolor=rgba(18, 18, 18, 0.5)]* u+ r4 k: G, U3 l" y- ~6 `
# }, J+ u1 S3 f* Z
; J6 V4 O1 i, ] K8 [# Z) c2 b1 V6 k
( O/ @3 n$ G0 E) e+ r" ?2 u& L* E' _+ k @" ]1 ^6 O! t
编辑切换为居中* W+ s9 v: G" I3 n
( o X6 ^9 Y8 r) k) b9 z
2 h5 f4 o; l5 d- `. f& `( Z
, t6 i1 @- N8 Y8 v7 M0 b3 l3 i1 c
( o' h& N9 `8 `/ v, `添加图片注释,不超过 140 字(可选)
* N) b9 z5 G" j$ W# Y7 ?. C! }, \/ v' F/ F
6 T5 U% x3 w ~9 k2 e T# V# C6 @4 o. L" I8 E' z' ~
6 x8 i6 u0 c/ E9 ]
Step 2:1 `0 c* ]6 l# H- A
依次点击【工具→选项→构建和运行】: n2 V5 x6 \" C; u3 \1 o+ B
4 N) z5 j% ?' m/ y/ h3 z
再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。
0 c" E" Q6 C8 H; r' o" s$ s& b1 Q F* X# U- ^9 E+ c
, e6 y7 S6 y" R6 S! f3 r* X2 ]: s# Z7 r, A- t: H- {
- I& ~$ q) x! a. Q, P4 l
[backcolor=rgba(18, 18, 18, 0.5)]
& E/ B0 V' X- ~. G3 z1 F9 k/ v/ J3 x+ G+ i/ `
& T: H$ {: E5 d( r/ [/ o3 u' R* }
, `; M W$ H6 W0 Y- Q% F& t" h# W+ [# q2 A- `
编辑切换为居中1 U; Y6 |$ Y1 R' ^% Q
& ^) W. b; h6 W% P& f' _
! P4 g$ P! f# _7 }. U+ ~' Q1 b% b- Q# J8 x
4 w9 Q4 J) A1 l1 [7 @添加图片注释,不超过 140 字(可选)
; T+ N7 q: I6 ]$ T7 H$ \& ~; w5 X
" a) f/ O: n9 Y5 R- V C
/ D* @* T& ?) m& ]/ I N" A6 c# N
) O" P0 I* Z% {, b% @
3 Y; K3 y1 z+ ~Step 3:
- g0 U/ b0 z- @* E9 \点击【工具→选项】9 C% ^8 y, f2 r# V: H
5 P( w r3 n! e, E3 ]2 E2 w
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。9 m, q( I$ B: J) Y' {
! [6 \3 u! t! Q( D' b. u
' w& M, v# {; g+ D9 n% u: ?- K* x4 i" \ P1 {* i) z7 N
4 @! U( n& n/ ~& y T [backcolor=rgba(18, 18, 18, 0.5)]
% k6 r& E! i7 [% N! v; l* Y7 G7 q" w2 s' E
, n# x6 Z% ?& x: ?6 I
' e3 k( l# D3 l- |& K- c, E, k% X9 q, w
编辑切换为居中
, E. c3 x8 K% i* g+ S2 q$ G/ X' a
; Q M/ U2 i! k a
, h5 G5 t, a8 C" d! {, X% Y- C6 j" c
( h3 i" B' [ B4 ?/ |; X添加图片注释,不超过 140 字(可选)& _3 q/ A8 ]8 \$ E0 s I- t' w, E
6 G# P6 _3 L" _$ D# D! i
& g" h8 g3 {/ Z) Y; s: q& [8 j; u
. k. c! G. w8 k
4 S: A' k! _7 r$ a* I- ?
9 x; \ c* g1 T" E9 z& v' G4 Y ]3 J2 f# ^" g) x1 F" k
5 O7 F. u- n/ C6 R4 {
[backcolor=rgba(18, 18, 18, 0.5)]- T( J' \7 |' x; t. r
( f& ? @' K2 W) O# I0 g) q/ J
3 G, B/ e2 D f' [* V7 v
. y. S) N7 F. K$ k( z" N% o- y6 o: {2 p* J4 N
编辑切换为居中/ G$ A) C* V$ M
5 S7 V2 t0 n' I7 [& S" x9 y$ ^* }- `( F, Z; V1 L4 U9 t1 `+ K
2 P% a/ j* q4 l* ?
! O$ [9 I4 I9 P( b, H1 X- c' a7 i添加图片注释,不超过 140 字(可选)) z, o2 S3 B# A$ p9 w8 m
! X) b8 {- e$ s1 I
( k6 _) f y+ E& i& z* ]+ I$ n
* S! s4 o! K+ @+ E& q& `
! u; B4 y8 w- B8 m0 |! o( i3 m
到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:$ ~3 K) ?7 F5 o$ I9 n
9 \8 k; v' F! n1.设置账号密码:adduser+账号passwd+密码, j4 L5 d f+ H6 N9 B
# R: k9 n+ [5 s2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出6 C7 [8 p$ u6 k
( D7 }% M2 O$ X( y7 p) }+ V
3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务
Q4 q( ?6 K6 b# }, N$ t3 ^
. T% Z- k- d1 Y1 z2 o/ u4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
+ @8 j( z# @9 w. U# v5 `2 P- }. D* t( V4 _
Step 4:
, g1 l7 R, P0 G5 m* n9 J6 _2 a指定目标文件路径
" ]/ C! M' I/ U) {8 J* a- s
0 [' }, f, N; H" B0 m' i& L& [在项目这个地方选择的存放路径要在.pro文件中声明。
4 w2 C+ L' U* J W* [; J: x/ |% [; Z; {. {
( M9 _4 f1 b. |* f
B5 _- r- W, N1 Y0 W/ H+ [ y" X
[backcolor=rgba(18, 18, 18, 0.5)] v( O8 U9 G; L l( Z
$ a* B! a: i" K6 j6 _1 G
; c) U$ t6 o" r9 X+ \( T
* f' j6 y1 {& [8 p! \% ~/ Q$ T8 G) `9 r, [2 Y6 F) m0 K
编辑切换为居中
6 y4 a9 ]/ M1 h# A9 B: j0 d: H4 I! p) U5 @) d- J+ ]/ o
9 B7 _1 A" a E5 Q% |& ^6 e: k+ ~/ J0 X% g: ~ _
, d# O. J% b3 ^
添加图片注释,不超过 140 字(可选)0 u9 I t5 H; }" B4 p' K0 i+ W2 }
2 |9 [+ |4 q; d
0 |; Q. D- d1 u4 m/ ]6 s: e( v) t+ l, ~1 C* s8 R$ b+ C% N
+ T {# G- I) s7 @. f/ o0 A& N8 n) F, B. h
8 l; `8 J3 l g2 i. N& @# A, z4 D; o$ X
[backcolor=rgba(18, 18, 18, 0.5)]8 `# z% f7 ~# E1 {
6 t6 m1 T( {) g ^- Y
4 s1 i6 u7 F. m6 e8 h: {
5 [. J- l0 W% A9 m5 K
+ q, l8 W' J& o! |. J: H编辑切换为居中
" \# X: { a5 @( W' y3 L% d4 D
# a% W% K- D0 I( U' S; x( e: W3 I+ l# [& `( Q) n3 v# N
' r4 A$ U4 U$ R% Z% d. Y7 S
; m- ]* c/ j" B/ ]
添加图片注释,不超过 140 字(可选)
5 N, q* w5 M9 S6 t* G+ K
* [4 O5 r: j3 D3 s' ?
& V! [4 b4 F6 P! I! |! Z0 A* t. \+ I& c. {( |
3 w# a$ T5 @; K& E, N* J
6 y) Y0 h1 t) |& a# r
u) p, g% J3 g9 o2 d8 R+ r
6 j) f1 }/ t7 Y0 ]& _, F
二、成果展示
/ V% P' Z2 u" y5 ~/ k$ a按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。2 t \& q& i; Q1 `
" I$ H1 m0 v7 m+ C, ]3 v
& v3 X' N6 X1 H6 x4 G
) v3 }: c& `1 m5 s2 M
) l; P3 r5 G0 u [backcolor=rgba(18, 18, 18, 0.5)]
8 Q" ~# m+ y% V, w) m: L3 Z
2 K% }/ H. V7 H# f1 ?* C% o9 W ' j# n! w- I8 F! I3 l" V5 O
: e8 R/ U* {6 E. }) n: {; w! K
; M5 g/ @( D2 o9 |6 `8 {) Y8 @- H
编辑切换为居中' D7 n8 d- i4 M4 K3 G
: O& ?: t3 U' B
* m3 L5 o2 k6 }7 W
* F$ h" S4 p4 Z7 J v* V; @9 J. Q3 D3 Q8 b9 a% p; A
添加图片注释,不超过 140 字(可选)# n1 q( D: T8 k2 I
# U8 S# w% h( v* |
# U3 ?2 D& U7 A& B, l0 o' z
0 B- J% K: _/ o8 }
% ?4 S8 O2 U7 }4 T! x
屏幕显示:
' h2 N+ } L4 H' J0 a0 y- n( s. M
4 I8 g6 z( v4 w- o! Y
: n# }- N( m# k: y& [5 w
- c2 m- f8 I' P$ J [backcolor=rgba(18, 18, 18, 0.5)]
W+ i( n5 D" B" y" i
# N% j) u7 U6 X. N' m
( c6 G9 i8 s% r! h* y6 _9 B
! T( F" F. K. x/ N. }6 ]9 B- x' x( K+ E; \. F# `. n/ l g
编辑切换为居中) @, \# i; _7 i- v" p' T
! g6 l" s0 S7 a3 Z/ q7 O' _
& [- _6 K$ E3 `% A
. r$ ~6 {! t' ^. E; e. \ b
3 Q+ T) I8 U% C1 Q. {添加图片注释,不超过 140 字(可选)9 x$ r& N2 Z E8 \- h4 R A) {
( y$ X" I& m8 L1 [9 D* M2 X9 _( s) X H7 t8 O. ~ d- Z9 z
& f9 m6 y+ @* J% S
8 { B5 _1 ]/ R( I! x D, o模拟研发人员进行增删:
( A! {. X$ y3 g, H! J) e
9 h8 Z2 g. A h
+ Y& X* ~, v8 S1 g
/ s/ H1 ]! t/ C% m5 F. s; Z$ p2 j1 ]% B, G. D/ D- w9 \) N
[backcolor=rgba(18, 18, 18, 0.5)]% S' X. b/ u( S' D+ p5 }
; r+ g( f ~6 g- o
% Z0 C- Q. X6 [5 I1 d# I2 l
l9 ^- t; q* n. q: C' h, @: Q) h* v( Z( g5 ?
编辑切换为居中
! u/ `- q4 I, c- r
- U' c( u4 i6 O: f' b+ o) V- \* \: ]5 I
" [/ t4 D% |2 ]) p/ H1 b4 F( Y+ A
6 ?; g: U9 U0 }
添加图片注释,不超过 140 字(可选)$ a+ N# M$ D$ q3 O7 e c
. `. x* y/ p ]6 E& G( S8 S9 w
( T g _5 a& P- U, Y' s4 Z
' B9 E* v' U# z4 f
# ^2 q9 B5 L9 d" @( l屏幕显示:- g& L( b2 Y- q8 G4 Q; @
6 Q& T, v0 g+ D9 H0 |
7 \% p3 k$ S3 s% h6 _& X+ r( G. e' v b# s$ @, K8 l
# B0 @9 E- f4 R# t [backcolor=rgba(18, 18, 18, 0.5)]
3 G# `; k' g y g$ R
, L' x5 _- h5 R/ y ' I W# E% k+ T" M$ F, {- `8 T% ]
2 F# C* ^# G4 `! v: C4 r
& r6 k, i9 r: u; B+ }9 |+ Q编辑切换为居中
3 k! @* C8 c4 |7 q5 o5 w7 w) a7 ?. L Z. [1 X/ H9 _$ D2 r
1 V2 E; h$ X- ~3 m
. a7 o: ^) l; Z% k' M& G3 u
6 |4 A. _6 |$ i G! h* q添加图片注释,不超过 140 字(可选)
* T; U1 x' H: [" v5 z# j3 h
4 s& x M' V1 H( A+ C' e- t; z. c) W: ] _, v$ z# m! o+ D
- P9 K5 V0 }0 e* k
. T- Z2 L; Y9 R0 Q, o
可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。
. u& _( C! R1 d
# ]0 n6 L$ E& d4 y% S. w" e三、经验分享 7 V" l. g0 q2 p
在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。/ j: _5 x* h8 m% E' E1 M
# ~% j0 o% f) q" d; M" L1.“连接错误”问题, l$ G1 H% A& X* d( F: N. k2 r
8 M$ f* H' i- _+ w ~( q, K
: }0 O5 Y0 b- j0 \2 O. A) b/ w$ ], O1 t
7 [1 C1 [$ L4 t- |% k4 H: ^* b& l
[backcolor=rgba(18, 18, 18, 0.5)]
& `5 E% y) g5 c9 M
. ?$ U7 j2 P* T' ^
: n2 @( Z4 I4 b9 ~' U4 a
% Z% K; g+ w' w( M4 }8 k5 g
, Z, [5 J& {3 Y3 z/ g$ s) X6 r编辑
a8 R' A9 \3 O" h9 P9 m+ F' M7 y( W9 `/ a5 O
/ v; _) I( P! q8 e# U" N
. r( F! [# i I
7 m- K r" t1 j' d0 b6 L添加图片注释,不超过 140 字(可选)( ^; E1 ~ |0 \! e. |
4 ~) X; @6 m8 h3 o
6 G# q0 v8 O, [; i4 A
0 l; R+ T6 R3 C' T9 ?/ \$ Q" r# |4 _" Y5 K$ V/ M
2.“部署失败”问题; L4 X$ U: F0 T( C* @8 \4 K+ q
& ^; c' L* u5 X* I: U& r1 V4 K& O
: g; L+ D. ]0 R5 Q$ ~
! j8 X I' v) T, z
9 Q5 [/ `) M' E* Z* f$ v* ? [backcolor=rgba(18, 18, 18, 0.5)]0 G) P. K, {( r8 f0 U
# ~9 m% k0 W+ d+ @# U$ f4 j! f4 b " q ]9 i: ?/ J+ P9 [$ d
: G% l9 I# Z' N5 t
2 p& s8 B# K S; r$ s
编辑切换为居中9 [3 h$ A7 k b5 C0 R4 L% [
% u J- E5 c2 j; F
0 L( n* B4 E6 _1 O6 d G( ?/ f
* p4 M' k5 \/ F% O; s1 y
0 ^, U/ Q( c8 p& Z8 @% ] y添加图片注释,不超过 140 字(可选)/ K" I4 G- v/ [ |$ ~) p" v6 v8 W6 c. n
* R% i' V/ L% N7 n3 f0 S+ r _) K$ [
! C; Q+ `# d4 l0 [8 D5 u, Y- S* H3 P! `2 n& _ G
出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。6 ~& ]0 w i# L( t# `! `
0 k( Z$ e, P, V6 F2 {8 I Y7 t* i0 v! S7 P& r, B& a6 Q+ ^2 B- R
0 n. _: H0 e+ }8 O, Y2 E8 F
' f( r' B# k# h5 l- K
[backcolor=rgba(18, 18, 18, 0.5)]
, a% v$ k) m4 v' J5 B; ?. Z
0 Z4 v# B; ~% D- C 7 D6 t' Z& k5 V
, E0 [, ?, ~1 N D1 M; w
' S- Y0 q( O" Z: ]# B' K& x编辑切换为居中
1 c3 o' v% C" t
$ p- U& j5 `) m* G9 L* V- @3 c- B L
6 ^, n# `0 J* \1 x, H2 E- ]1 e& l4 H7 h+ R- t7 f% g% q6 A
添加图片注释,不超过 140 字(可选)
5 ~* s' \; x' b/ _. x( h6 {# w- d- q' `' M0 _! N' `9 H W
8 x" r/ ?4 t6 K2 P* H0 _; G& h
& W6 U4 w$ `) Z1 D( B
, f9 q, ?. p/ J" ^& t7 P/ D四、总结; N4 z# S3 Y4 t
* a) k" Z' O- t
% D/ I6 |6 S# p! a6 d
$ v7 B$ k3 Y4 P6 R0 ~2 ^+ b% _9 D P8 [) S
0 |3 o( o# s& G( Z4 j
) k4 y" s: f) b2 _
" _9 x& O8 V* r
总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。
& M, A( U, p1 J: g% `% P/ _- E. S, K& q; y
9 U: P3 U0 o; p9 N h% {# m# A2 J
; B* i5 n3 p/ M& t) i7 u3 d' S
6 I1 Y% W9 ]: A) \' |6 Y7 J* C/ Y* i0 E
以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
8 D$ c; t% D- P) B
* Y: p0 r7 T5 I) o& I
" N, g6 H: l; `* V. L$ {4 n0 y$ ~ |
|