Qt Creator远程调试嵌入式ARM开发板上的Linux程序
2016-12-25 12:05
1226 查看
Qt自带调试功能,如果是主机上的程序可以直接调试,非常方便。同时,Qt是一个跨平台的编程语言,在主机上调试其他平台上的程序时就需要相应的设置。这种跨平台的调试在嵌入式开发时尤为重要,这里对跨平台的Qt调试作一个简单的介绍。
开发板
IP地址192.168.199.99
解压缩
进入工作目录
配置
这时
编译
编译过程中出了一点小问题,没有定义
解决方法参考应用调试之使用gdb和gdbserver
这里提示没有
找到如下信息:
说明
我们到gdbserver下的
重新编译就好了,这时在当前文件夹下就可以看到
其中IP是主机的IP地址。
显示,说明gdbserver已经在运行了。
![](https://img-blog.csdn.net/20161226115035278?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmFpZHVfMzEzODExNDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
端口号是上一步骤中设置的端口号;
![](https://img-blog.csdn.net/20161226115948876?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmFpZHVfMzEzODExNDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
点击OK就可以在主机上调试开发板中的程序了。
1.环境:
主机UBUNTU12.04,Qt Creator3.6.1,IP地址192.168.199.249,编译器版本:gcc 4.6.3,交叉编译器版本:arm-linux-gcc 3.4.5开发板
#uname -a Linux (none) 2.6.24 #24 Sun Jul 10 13:10:31 CST 2011 armv5tejl unknown
IP地址192.168.199.99
2.编译调试器
1. 主机端调试器
下载调试器源码GDB: The GNU Project Debugger,我这里下载的是gdb-7.6.tar.gz。解压缩
tar zxvf gdb-7.6.tar.gz
进入工作目录
cd gdb-7.6
配置
./configure --target=arm-linux --prefix=/home/yy/ctools/arm-9261 -v
make
make install
这时
arm-linux-gdb和
arm-linux-run就安装到了
/home/yy/ctools/arm-9261/bin目录下了。
2.编译开发板端调试器
进入gdbserver的目录cd gdb/gdbserver
编译
make
编译过程中出了一点小问题,没有定义
PTRACE_GETSIGINFO
linux-arm-low.c:643: error: `PTRACE_GETSIGINFO' undeclared (first use in this function)
解决方法参考应用调试之使用gdb和gdbserver
这里提示没有
PTRACE_GETSIGINFO这个东西,这里搜索
PTRACE_GETSIGINFO的路径为-I指定的头文件以及交叉编译工具链,我们不妨到交叉编译工具链里面去查找一下:
cd /usr/local/arm/3.4.5/
grep "PTRACE_GETSIGINFO" * -nR
找到如下信息:
arm-linux/sys-include/linux/ptrace.h:27:#define PTRACE_GETSIGINFO 0x4202 arm-linux/include/linux/ptrace.h:27:#define PTRACE_GETSIGINFO 0x4202 distributed/arm-linux/sys-include/linux/ptrace.h:27:#define PTRACE_GETSIGINFO 0x4202 distributed/arm-linux/include/linux/ptrace.h:27:#define PTRACE_GETSIGINFO 0x4202
说明
PTRACE_GETSIGINFO是在交叉编译工具链:
linux/ptrace.h文件里定义的,那么可能是头文件没有包含好吧!
我们到gdbserver下的
linux-arm-low.c里面一看,可不是嘛,只有:
#include <sys/ptrace.h>而没有:
#include <linux/ptrace.h>,于是加上:
#include <linux/ptrace.h>,再次编译:
make CC=/usr/local/arm/3.4.5/bin/arm-linux-gcc,成功!
重新编译就好了,这时在当前文件夹下就可以看到
gdbserver文件了。
3.测试
1. 设置开发板端
将编译好的文件和gdbserver拷贝到开发板上,执行./gdbserver 192.168.199.249:1234 filename
其中IP是主机的IP地址。
显示,说明gdbserver已经在运行了。
process filename created; pid = 319 Listening on port 1234
2. 设置主机端Qt Creator
进入调试-->开始调试-->Attach To Running Debug Server
端口号是上一步骤中设置的端口号;
Override server address是开发板的IP地址;本地执行档是程序的二进制文件,要和开发板中执行的一致;开发套件中的调试器要选择上面编译好的arm-linux-gdb;
点击OK就可以在主机上调试开发板中的程序了。
相关文章推荐
- 使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
- 使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】在AT91RM9200上通过nfs调试linux程序
- 嵌入式开发远程调试arm-linux-gdb的移植
- Windows 下使用Eclipse CDT 远程调试 Linux C/C++ 程序
- 嵌入式Linux的GDB远程调试的实现
- Windows 下使用Eclipse CDT 远程调试 Linux C/C++ 程序
- 嵌入式Linux系统的GDB远程调试实践(转)
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】gdb+gdbserver的方式进行ARM程序调试
- gdbserver远程调试嵌入式linux应用程序方法
- 在Windows上用Eclipse远程调试Linux下的C++程序
- Windows 下使用Eclipse CDT 远程调试 Linux C/C++ 程序
- 嵌入式Linux系统的GDB远程调试实践
- Windows 下使用Eclipse CDT 远程调试 Linux C/C++ 程序
- 嵌入式Linux的GDB远程调试的实现
- eclipse远程调试在linux下运行的程序
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】gdb+gdbserver的方式进行ARM程序调试
- 嵌入式Linux系统的GDB远程调试的实现
- 嵌入式Linux系统的GDB远程调试的实现
- Emacs+GDB远程调试ARM-LINUX程序