|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
相信各位工程师小伙伴都有这样的体会——当调试自己的Qt程序时,尤其是在调整界面显示和整体布局时,需要频繁地制作镜像烧写到核心板里来测试Qt程序是否完善,这样的操作既费时又费力。
" ]# }# ` c. S) Z9 s' f+ X7 G' W- w3 Q! O# A' G# s
那么,有没有更快捷的方法呢?今天小编就用OKT3-C开发板来为大家介绍如何快速进行Qt远程调试。话不多说,我们直接切入正题。( ~' A3 a4 N/ A8 c' N
% R. f4 E! k% i. k! Y一、修改工程配置* e% Z( N+ g) ^- b1 X7 g& \: j
Step 1:
) A4 @ ^+ F9 s4 `, a7 _. A打开OKT3-C开发板开发环境中的Qt软件,按照以下顺序依次点击:【工具→选项→构建和运行→Debuggers→Add】,选择gdb调试插件路径下的aarch64-linux-gnu-gdb,并命名gdb路径:
2 a4 A! P4 J3 f5 }# Y6 W
) C1 E' A8 ^9 j7 |6 i/home/forlinx/work/lichee/brandy/ARMv8_toolchain/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb(注:此路径是小编自己环境中的路径,大家自己实际环境前的路径会有所差异)
- Q$ J3 q( \9 K' K) o: L $ ~8 k2 r5 `" g4 V0 b9 s6 z
" A5 v# I4 Y# P% [% t5 @
+ P; i) z% o( l. C, P: B
[backcolor=rgba(18, 18, 18, 0.5)]2 }) I9 h5 b& `( S0 w) Y
6 ^2 f0 p1 i; u0 P6 F; g I) F4 W
4 q% P- R: T# Z) X
4 G+ X) k/ E) L! z) t
7 A+ Q1 ]; P4 m编辑切换为居中+ [0 n" Y! O* ^- k8 v
9 d6 _) y8 y3 k; g/ J- W! U: S. B! ^( R2 p
- Z: ?8 ~- u9 Z, i# q
& l9 k* Q1 O' C$ x6 N添加图片注释,不超过 140 字(可选)
, ?3 c+ b7 ~5 y, z U( U/ d$ p5 p* X: G7 o z, N9 x
S7 ]' W1 H1 M5 @/ Z) [
6 m3 p5 \- ~- B5 Y
) L; \$ y6 y; t( ?( N( {4 `& |# a
Step 2:
) ?; u- m) I8 } i9 m依次点击【工具→选项→构建和运行】
$ D! b& `* l# A, T; m1 M9 B
& X0 y+ a% H4 O" z5 E再点击Kit,添加一个新的配置,名称自拟即可,设备类型选择【通用Linux设备】,调试器选择刚刚创建好的Debuggers即可。- j; b4 F5 F) G: S7 D+ O( ~
" Q- g9 J d: ~/ g5 @8 u2 R) r* z& M: K$ X0 J$ H8 a: R3 {2 B
2 v" u w; E; L3 X
9 [7 p/ f2 I0 L9 D# c" d8 o. y [backcolor=rgba(18, 18, 18, 0.5)]/ a5 `. N1 ^& J
3 g# E* q4 D/ m/ E2 |7 h/ L6 [: f# q
+ L9 T+ D: a4 t; f% a4 V- k- k. F9 z1 A& y P' e9 ]4 k# L
6 y1 n2 y, @' _
编辑切换为居中
* \: A' i) @( G* W
, _; h; ]/ T7 G" W& K3 e
+ H& y4 e# m1 [ C' ^" v r3 U& a9 r- M9 N4 s4 _( l8 f
! b( [. ~' {$ d' p) H' N7 |! z8 [
添加图片注释,不超过 140 字(可选), }/ g' y# t; l
" v7 i- M P% Q3 Y" \; E) _/ Q/ n7 l% g
6 _7 j& O& g; h" p M; J0 C0 C! L. E, a: C) |! `- d% o3 ~
Step 3:
5 Z* ^; T$ |( O4 p点击【工具→选项】
. m/ p8 D) x6 M. r2 n7 J# j
& d4 T0 g' N" i5 O在最左侧选项里选择【设备】,进入【设备】界面后点击Add,添加GenericLinux Device(default for GenericLinux)设备,输入开发板的网络IP以及SSH登录的用户名和密码,再点击Test进行测试,验证连接后配置完成。
4 O0 M' R* ~& ]
0 b' X$ r* e) z" G& n/ u8 u9 y
5 ^( P6 M% R; W& I! M3 K
) w) ?; ]) S P @9 o4 H0 a" u% C# f0 _0 O8 I! E
[backcolor=rgba(18, 18, 18, 0.5)]+ I1 Y# x) D" N) I
/ F& x: U1 p$ `/ y1 a" Z; q
" l) h) n2 v$ ~8 G
; `2 ~8 n2 }' a4 `. D: C4 U) x. X) p* P" D8 X
编辑切换为居中
6 H e9 N* n1 U7 B# h; v* |- h3 O$ L
2 J" v7 T0 z v/ N9 R
3 m- F. L; b4 u( E& W. G! G1 q, f
. E6 W8 ~+ G; q$ I, Z添加图片注释,不超过 140 字(可选)
3 L( U- x. \. w& ]* G( L a* c9 X5 f/ `, f0 x
0 i) g" N0 R1 ~7 L0 z' O0 n
- Z5 D; ^/ t5 X3 x2 d- P4 U# f$ ?3 I J
, U7 w( l1 U2 y3 ]8 R# `
8 s* _3 ], N; `; p
$ \1 A# A |- N# r0 k [backcolor=rgba(18, 18, 18, 0.5)]. U j$ D$ X( [5 B, s% Q7 y
2 J! R! v5 _( F; S8 s" q) n/ L
/ h6 B3 A9 Z% i; k- v
! i$ a4 _" F; U% Z# h+ ^# A
" J* x# u; g( N0 S2 b* D" I# R
编辑切换为居中' A$ H( J1 n ?
+ e6 G- Q. R* h, C; E0 ]
; j" ^, ?$ T8 }/ X2 b: K
3 z/ C' p# A+ }3 J% |0 h l) i! f8 b$ Y: a8 y3 w
添加图片注释,不超过 140 字(可选)+ v; V' a. l" o1 U$ W$ p
8 f9 Q* E9 a4 R d
- F3 }' ^# l2 @+ f# A8 B
* e+ I! T4 k7 S" v9 k
/ o& ^( ^: V" {! p( \2 x) G到这一步,可能会有朋友要问了——“该如何配置OKT3-C开发板的SSH呢?”小编来为大家简单地介绍一下:
P7 v5 [. x# V- u0 u+ r' L8 W b. R
6 z# p& w0 m9 Q3 @" W7 t( `1.设置账号密码:adduser+账号passwd+密码
* O1 H5 A0 }- h7 j' G* H7 g) x' A i. c8 P7 D3 a: r( T
2.修改配置文件:/etc/ssh/sshd_config将#PermitRootLoginprohibit-password 修改为PermitRootLogin yes,保存退出
0 j& l" s' O0 O1 W6 E% I# x
. Z+ ?# v/ y- Q& B" E3.重启 SSHD:输入命令 /etc/init.d/S50sshdrestart ,重启SSHD服务2 b9 V: U" }$ @, H; D# X
/ w( Q! n4 _. X4.设置要修改的IP地址:输入命令:ifconfig eth0 +IP
1 n4 k R! Z3 p9 Z# J" Y) F" ^; b5 S
! p; M' S& m; V; ^& M' T% w( M' bStep 4:. [, e+ l! @& e
指定目标文件路径, c7 H; m; R7 j9 e' w6 ]
& a! Q; ?: n2 J9 U
在项目这个地方选择的存放路径要在.pro文件中声明。 F5 p1 ?. k) T/ `; }; S- \* B8 Q
$ d/ R9 Q& A7 g" L1 M+ c
; r& l) B: c/ a/ V, g* D8 l
* S% A6 n; M" ?7 S
& Q. I o. C8 ?& P8 G2 A
[backcolor=rgba(18, 18, 18, 0.5)]! [# j& f/ y6 Z6 G; O# m6 \
" U8 T( w- ^. H' s$ `8 p y" ]. o
) B3 |! P2 z% r" [& q& Y/ H7 B c' D# G7 I
' Y4 ~! A4 E* v7 v3 m编辑切换为居中
7 M3 w/ _/ {5 m% ^( B# h3 H; _$ D4 X& g& p1 X
% G7 c& g; i: E/ k2 b& |# L! ]( d- ]
% v* `! L2 ^( x# X6 s7 | g9 o$ O9 y, ^) w. | \
添加图片注释,不超过 140 字(可选). J' f9 v4 X7 C5 A, `
7 [/ v, [- x2 X# d- S
) v* I; [' @8 y0 U
' e$ N5 {5 [; l) F) K
+ ~+ W8 ?) v# q+ L" Y- y) B! m
2 R8 r6 ^8 [$ B3 w# Q' Y) n* ?' Y m# F5 y
3 P4 ~: Z# z' j# {+ N, [) o | [backcolor=rgba(18, 18, 18, 0.5)]! s) ^) \3 T6 r
/ ^4 i3 ] y- o: K) c
9 [- Q. s% t6 y: n! Q4 S2 C
2 ]: O/ j2 G& E% j) I# H" t0 Q* G
编辑切换为居中
) S V/ F! E: m( C. N( n3 s' Z6 I O4 }3 F, N
% \! F! r& [8 m1 w2 v, {; P
) B% T4 C+ s* ~- R, H6 g# [1 M
2 v! W$ ~! P% {
添加图片注释,不超过 140 字(可选), j7 l& i/ @2 v; F
5 [; D2 I# w; F+ j' ?
7 J8 D7 ~3 A! d$ m
. Q$ v9 D+ _7 N9 K8 `; b
0 d6 ~$ _8 X7 l8 _* }
3 M2 Q6 l3 K5 D j1 [5 b S$ p' ]* e8 p- A _) C
( q# w3 s0 w9 M3 F H; W" m
二、成果展示
7 b2 i2 u2 J. R( Q* d6 W7 z按步骤完成以上操作后,我们一起来看最后的成果吧。我们简单搭建一个界面,作为测试使用。
" ?4 }. a5 d! R& N$ h3 b s2 r$ a, W; \) [3 z- U4 }
( [5 F) x6 x% v6 S- ]# O
, q0 p3 S5 t" o: k
9 {- ^/ ]! |9 d' S: h- C [backcolor=rgba(18, 18, 18, 0.5)]( H6 J) m( w' @; X+ Y, f1 Z
0 H$ S' b- }" b/ J. A
+ ], e2 C- {4 `! v5 Q% y
" w+ p. C) Y( i- d' {
3 ~. F# {& U' A, {9 z; c W" E( e编辑切换为居中
5 e/ Y; y6 M! s) b. x2 F2 w7 O, \
: ? ^4 M& v+ \" ~' m3 W
9 D% c) n3 H: m Z/ w3 s6 |- e4 o* l* L, g9 g& g5 g' S
! F* q; d8 l+ K3 ^
添加图片注释,不超过 140 字(可选)
( A2 q. l$ m) ^& t
" @- h, m4 {4 D/ |0 e
) e& r J) Q. E( W3 M( i0 h) i4 Q: d& m
9 a$ G/ Z- @/ @9 Q8 B4 S屏幕显示:4 X# V! b/ @9 ^) ~$ M" ~
& o% w6 O' Q- |+ G
; L( T2 w1 |3 U# R& U: n$ u; J$ _9 z% ^; @$ }# s' I
$ L& x0 o+ B4 n; K: w1 ]8 e
[backcolor=rgba(18, 18, 18, 0.5)]' c; j d s) W* K) N6 ]
1 N6 ~# f/ F3 {+ w
Y+ d% q5 I. ?8 X- v) E, O; Z) |. l
4 l4 b. m+ v2 R6 f
编辑切换为居中
( [9 T4 u: W( w9 i" m9 T K; G# Q3 d( q" m- Y7 h
q/ }2 d0 |! p% u
( @+ }- z, s/ e2 ]6 x, c8 A. e+ d% Z. m. r; I% [
添加图片注释,不超过 140 字(可选)& C$ f9 f1 r9 u0 Z# z
4 p, L9 Z1 l# W% W* v
! _) M9 a. @; _" j% p6 q
: z' ^( i: Z9 Y3 ~9 j. |1 P
|6 D z" n2 u) G, L' u1 V
模拟研发人员进行增删:( Y' O* p6 M9 ?, P
9 F+ M0 \1 R+ U) q3 J. w# ~
* g+ \8 L4 L0 D: q. Q
9 M+ S1 I7 Z" j! Y" W3 z; [0 w" m. k% Z- @# E
[backcolor=rgba(18, 18, 18, 0.5)]
6 @- A. x* V4 W& S# b
; P- @1 r. ?( { z 4 @6 R9 \* g8 ^! c" v
# a, W1 t- q! ?/ @6 B
1 C* |; Y. n% Q2 J( r, N编辑切换为居中
q9 h1 ^5 I0 H5 b4 C5 ~
3 {7 O: m2 `, `; e# m$ {
$ U+ P+ q0 S1 P, f9 W- A9 z
* H6 m% v' x* ~! I) V! m+ C' Y( _- U6 [# y6 R; h
添加图片注释,不超过 140 字(可选)
& ^8 F, J8 D4 x. G$ O
( _; e1 O' i0 g: y
, O4 W7 t+ q/ W1 W2 d" H+ n) @) T* x1 n& ^
6 ~/ u5 t, e6 x/ Y
屏幕显示:/ e% @4 ~8 t3 W+ N2 Q
7 x$ t5 w% {0 |
, c: ?! i8 o/ v4 o7 O" a6 D N5 P: z) Z! b8 g8 [& F! N
9 G/ f+ m4 H( @! O
[backcolor=rgba(18, 18, 18, 0.5)]1 G9 B9 x, o; D6 ]
& K1 h5 N1 A) h6 q: w8 e, `. g/ ? ( M2 s; U/ M9 d0 E+ S" c
! l9 p. {6 P$ {' K3 Z- E3 a2 e. n( O2 P
编辑切换为居中: F0 z+ ` A( Z5 G, R
6 h1 @% E1 h( W" _
8 f1 k! P8 G$ ^2 O& d
, j3 m& X, U8 z9 f+ M: @; x) T8 [$ `. g6 c. F+ O9 a
添加图片注释,不超过 140 字(可选)3 ?9 C* `4 s) A7 v/ B- {
9 B u# G; T# p& U0 v& A, n. n) C1 b7 h* z0 x8 @
) K, Z( A& K+ ]7 H
+ Q/ h* v* z9 e( E可以看到,我们在Qt工程中做出的修改已经成功的显示在屏幕上了,中间并不需要繁琐的编译烧写,一键运行就可以看到实时的修改,这大大减小了开发人员的工作量,提高了工作效率。' t U& f9 B: k8 h* D
! R3 B% P5 }0 i0 w5 W4 N三、经验分享
' U8 z2 Q% W& K+ m9 `6 k在进行Qt远程调试的过程中,小编将自己踩过的一些坑和大家分享一下,希望各位工程师小伙伴可以少走弯路。( P, q x! H2 R' O# a
8 P, t% J2 r, Y& ?* ]) a% H( p1.“连接错误”问题
) V% V, S+ F0 `+ Z
: x/ H0 U: v0 }$ Y: _/ V/ ^3 L3 E! {# Z( }) [! b! O _ B4 _: f
, q: }# a. x5 x6 ]7 P! D* Z5 l# Z/ K9 b: c
[backcolor=rgba(18, 18, 18, 0.5)]
" b3 Z) y4 r1 N8 e9 T( F# E5 r
% b' {+ h4 D$ y }0 i) [
( ^2 W& G: o- z; f5 I. B
8 V" L" i9 l" ?1 N
F0 ~+ C( M* b- E3 Z v编辑# r& H. U- y$ T* e9 J" e: N% Z$ @5 |. D
. ~9 o7 W! J) l% p8 {% h& a/ Z# O+ C( q
" f0 ~+ N: D% g
7 S# g" }- ^. E! r, i6 l添加图片注释,不超过 140 字(可选). {$ d% K5 w% d2 f$ Q( }) F, F- U
* `9 I5 k O1 m5 Y9 w6 b
, ]4 {. g/ C# y: w+ T) g5 L0 G6 ~; A( _$ N B' [
) P+ `) ?2 J0 c9 \
2.“部署失败”问题' c7 \5 l3 K5 \9 g! C# @
+ I, o& M* w7 E6 [; i5 Q5 _' E' J' Z0 O1 C2 ^1 Q- L+ t1 Z2 ~
4 ^ K7 Q2 |2 }& N* a8 T
, @! y- m% }& F6 e [backcolor=rgba(18, 18, 18, 0.5)]. v! J2 U/ F6 f- H2 L
' s; f1 F: n4 j: D& F( C4 e6 f3 B. J
- B& N" K0 ~7 y$ T' T8 F# ?- b( t& ~0 L" u M+ j
/ @% Y# D- ^2 V3 {$ y编辑切换为居中
5 K3 U* s4 ~ o# F7 K# X* \, G- ]+ [8 K4 p% S# B
# j7 d2 N$ c6 }, H1 R8 [; P) I7 B& k) {. Q$ u: O- J( Q
- ^- X5 b; K4 H添加图片注释,不超过 140 字(可选)
/ e! _/ ~& E1 L* Z; b- O
& R2 n8 }8 u) u5 g
$ y9 W8 L7 T) ]5 n+ P- I# w
d; P; h5 o6 c1 ` j5 w \
2 m! ?( p/ l" ]/ U$ V8 f8 J2 R出现上图提示问题的原因是,在OKT3-C开发板上已经运行了一个程序,此时再运行一个新的程序就会部署失败。这时,只需要在开发板上杀掉该进程,就可以正确运行Qt程序。
; X( @" B& n# h% K4 M9 P" J3 M: U, u8 k' f4 K
& ?/ s3 k7 b* p5 ?( a' w: p
9 B( @9 A. P+ f |- m0 Y( h
* g8 u+ u/ v# v4 {9 ^$ F- L [backcolor=rgba(18, 18, 18, 0.5)]
* B3 ]0 D% a, M- G" b+ Y5 t$ k) f Z1 r l. H
2 ~. u, c: U' _
9 L' g' f/ r( s; Z" m! F8 b0 s J6 K6 x1 B6 \- _2 U
编辑切换为居中 C# p9 {2 j8 N( @5 z
) M8 f! p0 \% m- ?/ ?7 U* J
9 [5 K/ S) y3 F9 X$ G) J/ _7 p! }+ J* S; p
+ A4 b, t a) w7 b, P) Y" p
添加图片注释,不超过 140 字(可选)3 O3 t# O4 G, r: S, S
9 D! H2 v& l- q$ Y2 @
6 @ o1 Q8 K k/ k0 H! r
& @7 g8 L4 H$ r" V+ g* O% m. w: G! H9 M/ c9 B9 j' e
四、总结/ i& g; U5 a1 T- ^% w; }
! h5 ~3 D' X+ j, M" s/ L% x
6 O/ r5 H E/ |/ C: e1 E6 N% U* J
5 [5 k8 w9 d9 \, [- W
' @+ O' Q+ q+ D2 ]* L) V
' l) Q N) {. Y9 W2 ?* U4 ?2 Y s; g( T6 ?$ C
: H9 ~# ?9 n7 S( q( B
总结一下——通过配置虚拟机中的Qt应用程序、虚拟机网络IP,通过gdb调试和ssh服务,实现在虚拟机中编写Qt程序后,再点击绿色三角形的运行按钮,,即可在开发板中安装运行对应的Qt程序。9 L6 C3 R# W' i# \# W9 m* h
5 A4 c2 V# _* P, {
3 a' ^4 d0 U' O" S& x5 [9 r' ^: Q
; G1 N1 S4 S$ c+ s% ^; M( [: ]& N* H以上就是小编为大家整理的快速进行Qt远程调试的过程以及一些问题产生的原因,希望能够对大家有帮助。
! E# @3 [! F8 I1 b r5 B+ q
7 H* M( w& X* Z! {: m' A+ C! K5 }0 K! k) g/ j% t9 _
|
|