- 前期准备
使用qt5.8调试
pc机必须能与arm板ssh通信。
先查看pc版本的gdb以及gdb使用到python(注意:qt3.1之后调试需要python)
查看gdb版本:可通过qtcreator查看(tool->options->build&run->debuggers),如下图红色矩形区域
查看gdb使用的python版本,由上图找到gdb文件目录,打开它。使用ldd命令查看,可以发现,gdb使用的python3.5版本如下图:
好了,摸清我们pc端使用的gdb版本和python,我们就开始配置安装吧。为什么要有这个前期准备,因为qt调试必须要使用对应的python版本(本人曾编译python2.7版本,结果用qt调试的时候看不到调试信息)
gdb安装
0.下载gdb-7.11.1.tar.gz(http://www.gnu.org/software/gdb/download/)手动到网页下载
1、将gdb-7.11.tar.gz拷贝到任意的位置
2、解压gdb-7.11.1.tar.gz
tar -zxvf gdb-7.11.1.tar.gz
3、编译arm-linux-gdb(gdb client)(下面/usr/local是安装目录,可自行更改)
到目录gdb-7.7.1下
cd gdb-7.7.1
.
/
c
o
n
f
i
g
u
r
e
−
−
t
a
r
g
e
t
=
a
r
m
−
l
i
n
u
x
−
−
p
r
e
f
i
x
=
/
u
s
r
/
l
o
c
a
l
/
a
r
m
−
g
d
b
7.11.1
−
−
w
i
t
h
−
p
y
t
h
o
n
(
注
意
,
执
行
该
命
令
之
前
,
首
先
要
确
认
,
本
地
p
y
t
h
o
n
是
什
么
版
本
,
如
下
图
,
先
使
用
w
h
i
c
h
p
y
t
h
o
n
查
看
当
前
使
用
的
版
本
,
我
们
看
到
是
2.7
版
本
,
不
是
我
们
需
要
的
,
所
以
使
用
w
h
e
r
e
i
s
p
y
t
h
o
n
命
令
查
看
本
机
的
所
以
p
y
t
h
o
n
版
本
,
我
们
看
到
在
3.5
版
本
也
有
安
装
(
安
装
目
录
/
u
s
r
/
b
i
n
)
,
若
没
有
安
装
,
则
需
要
下
载
安
装
)
!
[
]
(
h
t
t
p
s
:
/
/
i
m
g
−
b
l
o
g
.
c
s
d
n
i
m
g
.
c
n
/
i
m
g
c
o
n
v
e
r
t
/
8
f
27
f
6
a
6
d
56
f
52
b
2049459156
b
1146
a
1.
p
n
g
)
接
下
来
我
们
需
要
把
当
前
的
p
y
t
h
o
n
换
成
3.5
,
使
用
如
下
命
令
:
e
x
p
o
r
t
P
A
T
H
=
/
u
s
r
/
b
i
n
/
:
./configure --target=arm-linux- -prefix=/usr/local/arm-gdb7.11.1 --with-python(注意,执行该命令之前,首先要确认,本地python是什么版本,如下图,先使用which python 查看当前使用的版本,我们看到是2.7版本,不是我们需要的,所以使用whereis python 命令查看本机的所以python版本,我们看到在3.5版本也有安装(安装目录/usr/bin),若没有安装,则需要下载安装) ![](https://img-blog.csdnimg.cn/img_convert/8f27f6a6d56f52b2049459156b1146a1.png) 接下来我们需要把当前的python换成3.5,使用如下命令:export PATH=/usr/bin/:
./configure−−target=arm−linux−−prefix=/usr/local/arm−gdb7.11.1−−with−python(注意,执行该命令之前,首先要确认,本地python是什么版本,如下图,先使用whichpython查看当前使用的版本,我们看到是2.7版本,不是我们需要的,所以使用whereispython命令查看本机的所以python版本,我们看到在3.5版本也有安装(安装目录/usr/bin),若没有安装,则需要下载安装)![](https://img−blog.csdnimg.cn/imgconvert/8f27f6a6d56f52b2049459156b1146a1.png)接下来我们需要把当前的python换成3.5,使用如下命令:exportPATH=/usr/bin/:PATH,在查看下当前python版本就变成3.5的了
target指明编译生成的GDB用于调试ARM-LINUX程序,prefix指明安装目录
–with-python将python模块编译进来。因为QT creator3.1版本开始,调试必须有Python功能。
Ubuntu自带Python。位于/usr/bin/。
$make
如果make出现如下错误
checkint for python3.5... /usr/bin/python3.5
checkint for python3.5... no
configure: error: no usable python found at python3.5
则需要在执行apt-get install python3.5-dev(因为c++调用python是通过dev的)。安装完成后重新configure再执行make。
若出现Python:未定义符号:pyunicodeucs2_decode等类似的错误(字符编码问题),则在编译使用如下选项:–enable-unicode=ucs4,在编译。如果还是出现相同错误,则需要自己下载对应的python版本编译安装,我就是出现这样问题,文末有python安装过程。
#make install
执行完毕后,可在安装目录下,看到生成的二进制文件,如下图
4、编译gdb server
#cd ./gdb/gdbserver (进入gdb-7.7.1目录里执行该句)
#./configure --host=arm-buildroot-linux-gnueabihf --prefix==/usr/local/arm-gdb7.11.1 /server
这里一定要指定生成主机目标(因为gdbserver要在arm下跑的)
#make -j8 && make install
假若出现一些werror的错误(警告信息当作错误处理),则输入如下命令./configure --disable-werror然后再make就行
执行完毕后,可在安装目录下,看到生成的二进制文件,如下图
准备调试
1.将arm-linux-gdbserver 拷贝到ARM板子的系统bin目录,并重命名未gdbserver(一定要拷贝到系统bin目录否则会出现如下情况)
2. 然后配置qt构建套
1)首先添加gdb调试器,如下图点击添加,浏览我们之前生成的arm-linux-gdb,设置即可,如下图
2)然后给arm版本的qt,添加步骤1)添加的调试器,如下图
这样就添加成功了。
3.配置远程设备
1)添加设备,tool->options->devices->add->gener…device->start wizard,按着向导,输入Ip,用户,密码
然后测试是否可以远程连接到arm板,测试成功如下:
2)配置本地生成的二进制文件传送到arm板子,在pro文件添加如下命令,其中/usr/ics是我们本地生成的文件传送到arm的目录
4.启动调试
随便打开一个qt应用程序,编译arm版本。点击调试,如果成功出现如下图
如果加载动态库失败或者位置无法定位,则需要手动指定符号库位置(是我们交叉编译arm版本qt的系统路径),如下图
python安装
$ wget -c https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
$ tar -xzvf Python-3.5.2.tgz
$ cd Python-3.5.2/
$ ./configure --prefix=/usr/local/python --enable-shared --enable-unicode=ucs2 LDFLAGS="-L/usr/lib/x86_64-linux-gnu"
$ make
$ sudo make install
其中, 上面的wget -c (url)是下载命令,参数-c表示支持断点下载, url是目标文件下载的绝对路径
“-L/usr/lib/x86_64-linux-gnu”中的x86_64-linux-gnu在/usr/lib/下可以找到, 这是x86_64可以看出我的系统是64的, 这里根据自己的系统进行键入。
–enable-shared 表示生成动态库,gdb是动态调用python,一开始没有加则报错未能找到或者python不可用
–enable-unicode=ucs2 标识使用ucs2编码编译,因为gdb调用python时候是用ucs2。
好了, 安装完后我们检测下, 终端键入python --version, 回车, 再键入which python查看版本
如果当前版本路径不对,则再按照上面步骤设置道我们编译安装的python版本目录上
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)