|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。- P, _# S; V) m8 B2 y2 K( ~! N6 I
' B/ B# b0 F: @- s2 C: f1 T/ I' g
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。
/ Z8 D! @( D: D7 X* J0 ?8 I+ t# t! |
一、修改工程配置
( X- j1 k8 o: A* G- V1 O4 k* Y. yStep 1:
; d3 Y9 [ G, ?+ N; Q6 v打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:9 d3 V2 t! b# s* g* h
! ~1 b+ q2 a& `. ~. n
/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)2 q% U' C# A4 S9 s* F
+ R7 C2 G% ?9 l1 \3 I
, o* Y! L+ Q2 n8 j7 m( f* H0 w9 v# T6 H) K; o2 d/ h, T9 X
[backcolor=rgba(18, 18, 18, 0.5)]
! n9 G* ^: H9 r
) k+ @8 z, H0 n) b 8 {8 @- d5 o8 _+ [4 v1 g
/ P, a4 w9 Y* A D6 I& |. p
& u4 G# @6 C0 X8 t& @' j2 A" n
编辑切换为居中
$ U# V3 r* p) o/ M4 Y
+ c0 o# z6 }7 u- e& s
; j( L0 w0 C$ X0 b
# y$ x; o* [7 i/ W- {& l. l4 v- y$ O# k+ q, v9 o1 f1 _7 z
添加图片注释,不超过 140 字(可选)! D9 N8 D9 ]* Y$ l6 H* X* e! h
: @, ]' s6 ?3 [+ G/ g0 ]$ L/ h- g% L: Z' h+ \+ x/ ?
' a" g% z; h0 U
5 D; U: i4 N6 ]& @Step 2:- Z* o' s/ G" h* \
依次点击【工具→选项→构建和运行】* F! g8 ?8 H8 s# y) R) h
! p6 i; T# o* V! y3 d再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。% ]/ J1 r, p. }: w4 r1 W. ]
) g8 e; m/ }5 _6 j
J! U/ j& o2 x. I3 K- Y( R2 ~8 A" v4 ~, o- ^' M) ~8 N. u4 R
E. w# w1 L7 c$ n, h4 `: C( I/ n [backcolor=rgba(18, 18, 18, 0.5)]
( }+ s# S& E- |& b- N9 `+ N2 n
' d2 _7 i$ y/ H
' x% O2 z3 B# L& k Y7 i, r7 ^
! ~ A2 u3 a2 u. O" v; ?
. }7 l7 R9 j: L5 u. X编辑切换为居中
9 I. ?4 z* S' f5 o( G3 a, s0 I7 x! U: Z: ^
* D f) d! A- H( @
* L- h4 |5 u5 Y$ \9 ^# `* I: P
8 E9 l8 z. l$ H7 c. ?0 k: [7 l添加图片注释,不超过 140 字(可选)
6 p: a* p2 ` F0 I3 R- P) [/ V1 o: @% D7 r A5 H
7 E) Y5 t& Z+ H7 o8 C; Q
; c! P: u& v0 U3 t [6 Q! z9 A/ o6 K# a' _+ P0 }
Step 3:9 X i( ^& [" j9 |: ^
点击【工具→选项】" _4 M& D% U3 I# R5 f! u& }. z
& X# n8 `, G; m$ g& H: Z, F
在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
) h" p6 w9 }7 J9 @8 M! _. j5 E% x5 w: P1 g/ j; n
) q( {7 o3 V4 j6 p* F3 k" ~
4 [: }) p$ W/ f& g
2 F. t3 I- G) y' g2 S( O+ g [backcolor=rgba(18, 18, 18, 0.5)]
, \2 W, E4 L5 n: g1 n6 s9 [7 I7 n
: i+ b+ V! {4 D( _7 R, Q$ y4 }& ^& e8 E' u! ^. h4 ~+ x; L
1 R. J1 C! [" e- c" ?, U" O
编辑切换为居中
- y9 f7 _. Q/ F9 e3 S& U" ?8 l- c
$ i6 T" `8 d4 ?( R0 U) x
" v$ g: i$ o! `6 u) b( E$ U& m% g5 |# q+ U- T
# s3 `7 B9 J2 T+ S4 ?
添加图片注释,不超过 140 字(可选)
$ o9 J. I' k2 V+ {' `9 Q$ H& p ^" G( \6 |( h N' |& A! n* T
5 |/ ?3 H) C" L/ k4 N# p" t+ {& L6 q* }9 v
& j; a. m. P- H- y+ u! d" c6 {( O5 @! a' m" u
5 W* U9 o$ i- d% E, _' O# j: `, _2 }) o: l
[backcolor=rgba(18, 18, 18, 0.5)]/ |$ d3 J- g2 X$ o. C9 V% x( y
& w# P' H& D; A3 k3 B
5 B/ ~& z# H- [1 |/ M; K
+ Q3 g# {, g2 O; a
- L/ ?* U, {7 f$ J4 C5 Y7 a, W编辑切换为居中" W! H$ R9 E- H& s) S
6 u G8 g% u( z+ L3 g6 J! v
% ^! {# v: m& }: A8 i& ^1 H# f1 G: t" x% K" M
6 u# ~9 R6 _) z$ L r) ]4 ], b添加图片注释,不超过 140 字(可选), N3 C) Q' E) z2 e5 U
' C. v m+ z0 k4 \) P
& ~3 q0 b% E6 N& i
6 J, k. a. s/ W( J9 I
* g( l2 g- U9 N- _. }, s到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:8 ]. _- M1 o# a$ _- I
: S2 B. [4 e4 w% W' t
1.设置账号密码:adduser+账号passwd+密码
. g5 y& C0 C& g8 u3 M
* q2 u; w K: [- |2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
0 @$ R( j1 h* S5 J6 z5 S! L/ X$ y* V/ R0 |' {5 Z
3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务5 S7 z* e8 n% V: d
1 E' ]) h' ^8 N5 i' X! I3 ]" j& d! _, L
4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
$ l0 t5 @# o! }7 u3 v( s/ A! E2 ? s' t8 y* I; X
Step 4:
/ b/ `# n% k+ e) H指定目标文件路径0 Q" Z0 ]1 V- o; o
1 h2 T* b/ x+ i" @/ T+ n& o/ I+ p
在项目这个地方选择的存放路径要在.pro文件中声明。- K) B7 g' j7 T, c
7 |: @: p: W6 m/ `+ L
: S, r. Q' y' P- }0 @* V
& _7 |$ h9 _* H- i) i( w) @/ c4 e
$ s6 n' M0 a, y0 X! O1 l U' J: g8 c/ C( X [backcolor=rgba(18, 18, 18, 0.5)]
: j! W1 S3 ~3 h% V$ D0 O+ C3 }- j4 e7 a, |! m
5 h) A3 w9 i+ O9 o+ W: p$ _
9 s& y( Z- Y1 s" F8 [- J: `$ [) a0 G$ p: g5 D5 Q
编辑切换为居中
4 C: U# T; L" @% ~4 H9 }) H( s4 g3 k' Q, i Y( m# p+ f
6 \# v, t3 E: h, o4 A3 Q" [' M( U1 u' X7 l- z, W5 p3 D! ^5 z; l
* y( G/ f8 x. C- z# n* c; f; k
添加图片注释,不超过 140 字(可选)( O7 B( `( e! c; @ t. X! o
4 D( R8 {' r! p* g
6 B. b1 P X# `+ Y
+ z9 V& a I7 |' I: @
6 v) m/ B) [: ^ x+ }
. G$ X7 ?( b# R2 M- K: ~& J/ I( |* D. Q5 B" o: Q. g$ [
! @; ` V' w/ |' L9 N) N3 U [backcolor=rgba(18, 18, 18, 0.5)]
* | J- Z8 p- v, f, B" Y# P/ x8 x
6 |' d8 @ c6 S" x- a/ u. c8 z# y
+ o& f9 I. S2 `0 I5 Q+ p0 _* N2 |6 ?' O6 x
$ \4 N. d; L" Z. y, ^3 z4 `编辑切换为居中
l% t% e) F8 N7 o( A L) r: R+ K0 a7 u' X1 v3 M4 K0 z0 K
" p* u% U2 ?! @- ^- H
$ r* T1 m$ U4 N9 U( Q
4 D" H3 e4 @# c' e添加图片注释,不超过 140 字(可选)4 `0 _( b# |4 I, }1 M; z
0 w$ @8 M, f9 @0 H" _- G+ t- b8 v8 s: |7 Q ~7 O! K+ A
; x, z( B! q Q; |5 S4 d; u J* B5 B) e) H
* a. R) c V1 ]0 u( k; |1 z
9 S5 e6 ]* Y$ V- H8 T% L
2 [( a8 [, N" y# c0 P" A二、成果展示 6 P8 k1 ]/ E& M& C3 C( G" C3 z: J
按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。
7 C& I7 u+ h" n. w' K/ [ m
* k2 s) q( \4 d+ }6 q# G6 S0 U" \& l- H* _8 y. c
3 S4 ^* L) ~% J) F( B4 B/ S. [
0 V# Z1 _- n$ q0 O1 n
[backcolor=rgba(18, 18, 18, 0.5)]
& ^: w; T, ?0 S5 L% l1 L
, z& F. O- T! l$ l: K- I ' I T& y. ~, d
3 D" H1 `4 Q9 G' e
! B9 Y0 _" u' g7 v8 E; c4 Z3 c编辑切换为居中
4 \7 u6 H! R2 O7 W; a
, }( h" n$ v5 ~$ Y4 w; g
5 S4 k; c5 ~& d! l9 O+ r. s) W! T' ]( y5 u$ f3 a" U8 f
* i0 T: ^5 {3 I. V* b2 b
添加图片注释,不超过 140 字(可选)+ O) x0 j# D% P( q: A0 S V! v1 \
$ R; E6 ^0 g' Z; ]- y) S: s
! [1 k5 K i: p8 [
$ O+ C# a1 l; C/ \5 ?& d; k% f
1 u7 A' }( P# X- Z; A3 N' ]8 }屏幕显示:
% F f0 ]5 V( P# [# y( T" W3 |+ n3 p/ k
) }2 w- N) ~2 S+ D- l3 e& c
/ z8 D5 Z/ P: O; g: G: `& a4 T7 o2 l* ?) P0 ^6 l
[backcolor=rgba(18, 18, 18, 0.5)]# u" }3 x# O( b' w% n* o7 `
; V# `* Z, ]. \/ p- F4 [) G5 N
' h5 C" } m' x! D+ Q$ B7 T
' Y6 ?' u& Y5 K- k) }# ?
# C7 k5 j* M" `6 o1 i# w编辑切换为居中9 L5 h% S# T6 A
; s3 W+ v7 o6 z( |6 H: T
% Q+ @5 }0 N' a+ W9 h0 r, h9 B5 B: @9 T ~1 A
9 B; h$ C; u3 K, ?5 H' o- W, V
添加图片注释,不超过 140 字(可选)3 Y* G/ |' S; F @
% m/ O& q2 u( u5 i# Q! O C& T; T% ?
/ D7 H2 v2 }' F5 L
8 U" G) Z; x3 |( Q, n模拟研发人员进行增删:
4 [0 |' R, O+ Q4 I2 C8 R0 d
0 W0 r5 _" s" Y" \9 m( t* z) |
+ r" z8 U [. j* ^" O
9 Q" L7 u0 A+ Q/ m) @4 O
[backcolor=rgba(18, 18, 18, 0.5)]/ m% y1 Z3 i3 k5 D4 I
7 H. k1 U! t2 M* f: m4 D , E4 n" X" W3 v( z% X
( ?2 Y Y% {% G! S& A8 L$ g" O! M
0 |9 N5 z- E9 u- t" q) q
编辑切换为居中
- ~8 ~0 C* m+ z) e# I, M8 x6 C6 O* [7 q% R
, G |* y5 K" q0 N4 ]7 V
. _2 e* T4 F# B, l; |2 W$ i) Y$ `
) r1 v1 b' W) j/ Z5 f添加图片注释,不超过 140 字(可选)$ i. V/ R( @. v
! O9 P% r$ ^: `6 R. i' P
! J; M5 \, ~' ^& U- ^3 L% T
$ \" F% @4 R5 E. O) [& e6 R
9 }- p0 l' T! I- {7 J* s' x" d屏幕显示:1 E% p7 Z" ~3 L2 `+ u$ h, x
$ A! a; I2 U) R
, y1 b% e; ?; Z
6 n4 ?7 F( R# J% S% a1 L7 O0 |7 n- X; `& B$ W& ~& w7 h$ ~
[backcolor=rgba(18, 18, 18, 0.5)]* A7 I/ v9 ^5 N3 t$ \" k6 D
3 d& N' h: C/ a. c0 F( y
6 h# Q$ w. `8 w, K+ A+ f: ]* h' F7 {
' E) q* q8 x8 K; W9 S& o8 |( ]5 P; E `
编辑切换为居中
5 E4 j" J8 j! d8 r5 \) g( O. O- |; E. Z& w4 X7 V
/ i, Q j t3 R2 X I8 A, U' W
% \/ f& E7 b" j2 i! F( F% {: v+ X; w. @6 Y8 o% J5 J
添加图片注释,不超过 140 字(可选)
! z6 l, }3 p! G8 X
* F* n! u4 b4 @$ Y3 C) U* i' T8 Y* A6 m! ]; N3 ^( t
9 z: q. Y7 w7 p3 b- r" a
+ J9 c/ `+ v U. c. R+ [7 k# F1 Z* L可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。
2 ^8 f+ D- ?# ]7 S& h5 m2 [1 n' }0 ?) v' I8 E, Y
三、经验分享
( {! |4 D2 k, Y在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。# k: n; p n6 y* A' ^2 X
* T4 ^6 ?# S/ \1.“连接错误”问题
! `4 V& Q9 Y( b
- L9 |3 Q& m" f: y% _$ D; {6 @1 z1 m* G* g2 Z
* f6 j9 o2 _9 u. b6 G5 T: p0 q
* ], N. O; Q: m- z% q [backcolor=rgba(18, 18, 18, 0.5)]
4 q/ q; f( I/ `. q: _% Z4 `6 ~& G9 X9 n# z0 d! [8 z, Y% I% N
0 z- e! N. f5 g$ N) z$ n, h$ r, W8 A# M2 y6 R0 D
1 a5 ?' J1 @- C0 r4 o& k8 ]+ \& K编辑
2 s9 U7 P, @2 w' s x
( V& Y4 p5 q3 ` n% C' O6 A5 F+ K5 H m; W4 P
3 O3 c& J1 S* s+ R' ]" {$ e0 B- O
/ z1 ]+ Y& K) I) k+ d- @
添加图片注释,不超过 140 字(可选)$ L! `# t3 n# {0 O9 b2 @/ O
3 u7 {5 [3 w! S( ?7 S& B2 w
* i) ]- `; ?" w
3 }2 D7 ~, v+ E- ?2 x3 N) h2 t0 d3 l
) q7 |6 P; X. q2 r% `2.“部署失败”问题
3 o( m6 z# P1 {/ y! K, f5 l1 ^- ]7 ]3 L7 x7 K% q
2 _8 \$ g7 X2 [$ U% R2 f' V d8 L* M: o5 I( O5 ^) A
' c! H x ?: m4 r. P- H7 {# [ [backcolor=rgba(18, 18, 18, 0.5)]6 h* j& C0 I# \ Q. l! Z
2 g* P2 b) y4 G& D
3 l( h% H u, b) z- l2 R+ r. R* u) t3 j/ X+ I
8 i; y) v# ]. G; E- p$ }编辑切换为居中
" \( ^8 N a0 r) L9 _0 r/ K
y9 e6 h4 T( f/ J0 X
o7 `. |6 ]: w: \. Y/ _% N3 B2 b6 }; F
. E! K5 v0 S7 O' O( y4 Z ~
添加图片注释,不超过 140 字(可选)) Q" n% p+ T+ F. z
- ` I3 Z' c8 y# E: x1 }: Y/ |* t5 B' u7 R: X0 u) u( N
( i, c7 {0 {* _5 B) y; m0 u* x
* I8 o5 t2 A1 \出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
: Q2 m. E9 b7 u& Z
; W2 [. ^3 h% V9 H( Z" y! R% x3 |7 L
0 i) C5 L \5 [2 ~* l
9 b" C7 s8 T/ L- G" Y% b; v% @
[backcolor=rgba(18, 18, 18, 0.5)]
: ?. k- ` n4 |
0 [9 E( y" U. m: u1 b 6 @8 q0 c o( Q0 E/ }+ w
$ d# l: z5 ?! K* }! `7 H% w3 l7 |6 g& y [* {8 d4 c7 J
编辑切换为居中$ X2 p# f6 P1 C1 R
9 u6 p+ Y7 I% q! M& R* ]1 m4 J% C" k, k; s
0 O5 r3 T/ i' y- f* r8 t
1 x) K2 ?, \: b( I" \添加图片注释,不超过 140 字(可选)
2 _8 T: J5 _! {* l T& x- ]2 d
, ^+ D% r" m7 [+ k
3 K' t- c. D- {4 e0 z( p2 M" v* N$ u* c$ Z2 u$ v% K/ A, d, o
' z0 k( v. A7 ?7 B/ e
四、总结' s& I% v: K) N B7 |
0 e3 v" R) E1 Q- P% r" d9 h1 M% \0 R, {2 o. U8 b9 j
4 e- }: ]& M; K" Q) v& b0 G
( H8 o0 [& p: [8 }5 G( H1 @
( w+ t2 k1 i* z2 q' b# z; {9 q% J$ u7 g
}' i% {7 p+ w7 k总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。: P2 R; A U" j, z6 c
) G% Z% E* ]0 f: o n7 d9 K4 ]" ?
% {7 D. ~" G. {8 Y: _
1 @$ z& e/ z. a w; Y
9 x8 E; A( P8 y6 `, w1 y
以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
1 c1 u0 C/ @6 L
' j8 y8 p2 E2 g; D( G# ]2 R8 `5 e/ D! L( W2 i! [/ z
|
|