走了几天弯路总算是把qt调试配置搞定了,写点需要注意的事项吧,做个记录,也给有同样需求的同学参考,内容为本人原创,转载请注明原作者:s163l@163.com
主机:Ubuntu14.4系统, Qt5.5环境,主机nfs服务器目录为/opt/nfs.
主机ip: 192.168.2.123
嵌入式主板: nxp imx6q,nfs挂载点为:/opt/nfs
Arm ip: 192.168.2.6
默认linux+qt+nfs已正确安装并启动,
一 gdb安装篇:
- 下载gdb 7.8版本
- http://ftp.gnu.org/gnu/gdb/
- Tar zxvf gdb-7.8.tar.gz
- ./configure --target=arm-linux-gnueabi --prefix=/opt/arm-gdb/
Target编译器的头:注意此处不对容易造成编译不通过,请选择本机的编译器头
Prefix=目标路径
5. Make
6. Make install
7. 安装完毕可执行 arm-linux-gnueabi-gdb -v查看版本
二 gdb-server
- cd gdb/gdbserver
- ./configure --target=arm-linux-gnueabi --host=arm-linux-gnueabi
- make
- 生成gdbserver cp /opt/nfs下
主机端测试:
#arm-linux-gnueabihf-gdb qtstart //qtstart为编译生成目标
(gdb) target remote 192.168.2.6:2345 //连接到开发板(需要提前在开发板上启动gdbserver 见下面三.3) 如出现下面提示 则连接成功,可以调试
Remote debugging using 192.168.2.6:2345
Reading /lib/ld-linux-armhf.so.3 from remote target...
…
0x76fcfb00 in _start () from target:/lib/ld-linux-armhf.so.3
如果出现Remote ‘g’ packet reply is too long错误,则需要更改源码remote.c文件,重新编译。网上搜索一下参考,我这里就不提了。
三 QT下使用GDB远程调试ARM板
- 使用qt创建一个工程,存储位置自定。但需要将项目构建目录调整nfs目录下:/opt/nfs/build-qtstart-debug。
- 编译工程,此时在arm板上对应的nfs下会生成可执行文件。
- Arm开发板上启动gdb
gdbserver :2345 /opt/nfs/build-qtstart-debug/qtstart -qws
2345为自定义端口,后面指定目标程序 最后是qws参数
4. Qt菜单启动 选择debug-> attach to running debug server
服务器端口选择自定义的2345
Override server address 选择arm ip:192.168.2.6
本地执行档选择刚才编译的可执行文件 /opt/nfs/build-qtstart-debug/qtstart
工作目录同上。点击ok,此时显示启动器加载成功,可以调试。注意把main函数断点选上。
注意:如果上表没有填上arm ip地址,会提示Not enough free ports on device for debugging.
连接成功后单步运行可看到调试界面如下: