Qt下使用GDB远程调试ARM板
第一部分:GDB调试工具安装
一.预处理(否则MAKE时候有错误)
sudo apt-getinstall texinfo
sudo apt-getinstall libncurses5-dev
sudo apt-getinstall m4
sudo apt-getinstall flex
sudo apt-getinstall bison
如果不做预处理,MAKE可能会出现下述错误
1、error: no termcap library found
2、error: makeinfo is required for compilation
二.搭建过程
在虚拟机Linux下ubuntu11.10,arm为华天正Real6410
0.下载gdb-7.4.tar.gz(http://www.gnu.org/software/gdb/download/)
手动到网页下载
1、将gdb-7.4.tar.gz拷贝到任意的位置
2、解压gdb-7.4.tar.gz
tar -zxvf gdb-7.4.tar.gz
3、编译arm-linux-gdb(下面/usr/local是安装目录,可自行更改)
到目录gdb-7.4下
cd gdb-7.4
$./configure --target=arm-linux--prefix=/usr/local/arm-gdb -v
target指明编译生成的GDB用于调试ARM-LINUX程序,prefix指明安装目录
$make
#make install
#sudo gedit /etc/profile
export PATH=$PATH:/usr/local/arm-gdb/bin --把arm-linux-gdb加入环境变量
这样就可以在/usr/local/arm-gdb/bin目录下看到如下三个可执行文件
arm-linux-gdb arm-linux-gdbtui arm-linux-run
4、编译GDB Client
#cd ./gdb/gdbserver (进入gdb-7.4目录里执行该句)
#export PATH=$PATH:/usr/local/arm-gdb/bin
#./configure --target=arm-linux--host=arm-linux
#sudo gedit config.h
//#define HAVA_SYS_REG_H //注释此句
#make CC=arm-linux-gcc //编译用于目标机的stub程序生成gdbserver是GDB客户端程序,在板子上运行。
5、将gdbserver通过你搭建的环境下载到开发板(我的环境是nfs)
三,使用例程
1.编辑文件
# geditgdbtest.c
#include <stdio.h>
int func(int n)
{
int sum=0, i;
for (i=0; i<n; i++)
{
sum += i;
}
return sum;
}
int
main(void)
{
int i;
long result = 0;
for (i=0; i<=100; i++)
{
result += i;
}
printf("result[1-100] = %d \n",result);
printf("resutl[1-225] = %d \n",func(255));
return 0;
}
# arm-linux-gcc-g gdbtest.c -o gdbtest // 交叉编译
2.下载文件到目标板: gdbtest和gdbserver
假设 host pc ip:192.168.1.178
board ip:192.168.1.20
将文件拷贝到目标板上(通过NFS或其他工具)
检查目标板上是否有gdbtest和gdbserver两个文件。(最好从共享文件夹把这两个文件移到目标板的其他一个目录下面)
3.运行调试
client board:
#./gdbserver 192.168.1.178:1234 gdbtest //目标板上运行gdbtest 监听端口1234
host pc:
#cd/usr/local/arm-gdb/bin/ (就是arm-gdb的目录)
#copy gdbtest/usr/local/arm-gdb/bin/ //将前面编译的文件gdbtest拷贝到此目录
测试
#./arm-linux-gdbgdbtest
(gdb)target remote 192.168.0.232:1234 // 连接到开发板 成功后就可以进行调试
(gdb)list or l
(gdb)break func
(gdb)break 22
(gdb)info br
(gdb)continue orc // 这里不能用 run
(gdb)next or n
(gdb)print or presult
(gdb) finish // 跳出func函数
(gdb) next
(gdb) quit
第二部分:Qt下使用GDB远程调试ARM板
需要工具:ARM开发板(real6410),GDB调试工具,Qt,nfs服务器
1. GDB的安装,参照上文
2. 启动nfs服务器(一般都默认启动),目标板挂载nfs共享文件夹,这里目标板的目录是
/work/zsaj/
3. 使用Qt创建一个工程,并把整个工程目录(如qt4_test和qt4_test-build-arm)创建到nfs服务器的共享根目录下面。这里我们用的是
/home/alexon/Mpiwork/
4. 编译工程,此时会同步在目标板上生成可执行文件
5. 目标板上启动目标程序的GDB调试模式
# ./gdbserver 192.168.1.22:1234 ./zsaj/1234-build-arm/1234 -qws
第一个是gdb服务器,第二个参数是主机ID和自定义的监视口,第三个参数是目标板上的目标程序,最后一个是-qws参数。
6. Qt菜单栏,选择debug->start debugging->start andattach to remote application.
Debugger选择之前安装的gdb调试工具,这里是/home/alexon/arm-gdb/bin/arm-linux-gdb
Local executable选择该工程编译生成的本机上的可执行文件,这里是/home/alexon/Mpiwork/1234-build-arm/1234
Host and port设置的是目标板的IP以及刚才目标板定义的监视口
最后Architecture选择i386,OK即可开始调试,记得设置断点。
Qt下使用GDB远程调试ARM板相关推荐
- linux 远程调试文件夹,GDB远程调试开发板程序
一.概述 可能我们都熟悉直接在发行版linux系统下调试系统,只需要在安装系统的时候包含了调试工具,直接可以根据gdb进行调试.但对于很多做嵌入式的来说,可能经常需要调试运行在开发板上的应用程序,下面 ...
- android gdb 远程调试工具,Android下用gdb远程调试办法
Host: ubuntu Target: Android ICS 1. 将gdbserver和gdbclient分别放入target和host.两者都可在android源代码的prebuilt目录下找 ...
- GDB 远程调试试验(gdbserver)【ZT】
一.基本原理 调试器是运行在host pc机的应用程序, 被调试的程序是运行在target上. 插桩(stub):在目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试. 调试器与被调程 ...
- IDA+GDB远程调试android平台 - Aarch64- elf64程序
gdb配置 gdb和gdbserver gdbserver的是在 android-ndk-r10e\prebuilt\android-arm\gdbserver 这个目录下 gdb 是在 androi ...
- Linux下使用GDB进行调试
Linux下使用GDB进行调试的常用命令记于此. $ sudo su # g++ -g test.cpp -o test -pthread # gdb test <------- ...
- 在海思芯片上使用GDB远程调试
0.载GDB安装包,下载地址:Index of /gnu/gdb,使用8.2版本 1.见下面链接: 在海思芯片上使用GDB远程调试_大橙子疯的博客-CSDN博客_海思gdb调试 和 arm-linux ...
- Qtcreator远程调试arm开发板程序指南
环境配置 1 ,交叉编译gdb, 主要是gdbserver,把gdbserver 放在arm开发板的可执行程序目录里 2 安装gdb-multiarch, sudo apt-get install g ...
- 【GDB】gdbserver的使用,远程调试开发板
0.将gdbserver拷贝到目标板子上 注:gdbserver在交叉编译工具目录/debug-root/usr/bin下 可用file命令查看 --------------------------- ...
- linux gdb模式下无反应,Linux,GDB 嵌入式Linux的GDB远程调试的问题--断点没反应
院士 2006-12-22 22:43:00 评分 2楼 问 我用的是BF531 uClinux Linux version 2.6.16.11-ADI-2006R1-hhbf (root@se ...
- VsCode + gdb + gdbserver远程调试arm嵌入式linux C/C++程序
基本流程跟我的另一篇文章<VsCode + gdb + gdbserver远程调试C++程序>一样,不一样的是需要重新编译gdb和交叉编译gdbserver. 一.准备工作 sudo ap ...
最新文章
- mxnet symbol图的 变量 shape
- Lesson 12.4 逻辑回归建模实验
- 使用docker-compose部署sentinel
- Kosaraju算法(发现强连通分图算法)
- Optical_Flow(3)
- PAT乙:1009 说反话
- sql string转number_少用 string.Format
- Wordpress 自定义文章类型添加 Categoried、Tags
- 主席树 || 可持久化线段树 || BZOJ 3653: 谈笑风生 || Luogu P3899 [湖南集训]谈笑风生...
- 【图像分割】基于matlab GUI类间方差阈值图像分割【含Matlab源码 583期】
- 前端工程师的基本工作流程
- 护眼html颜色,在电脑中设置护眼颜色、更换网页背景色、一键护眼
- 乐2 乐视X621_官方线刷包_救砖包_解账户锁
- 手机创新何时不再“纸上谈兵”?
- 刘同——谁的青春不迷茫,给你冬日满满正能量
- 基于51单片机实现计算器功能
- 解析DELLR710服务器迁移操作内容
- 哪些关于硬件的事之串行与并行到底是hang还是xing
- Vue小项目Mock.js的学习
- 数学建模笔记CH2:微积分方法建模
热门文章
- 内置单片机的433无线模块高速连传典型运用
- FPGA的学习:TFT_LCD液晶屏字符显示
- 在静止状态下根据IMU(加速度计)计算姿态角
- Qt中qmake的INSTALLS变量将编译文件拷到运行目录
- html背景渐变蓝色,CSS3网页渐变色背景,适用于IE
- Premiere导入视频之后音频轨没有内容
- 思考怎么成为一名合格的技术总监?
- 顽皮的雪狐七七:CSS——清除浮动所有方法总结
- ARM开发初级-Windows环境下的STM32开发环境搭建(包含missing compiler version 5的解决方法)-学习笔记02
- 如何系统学习知识图谱-胖子哥的实践经验分享