Qt Creator远程调试嵌入式ARM开发板上的Linux程序

Qt自带调试功能,如果是主机上的程序可以直接调试,非常方便。同时,Qt是一个跨平台的编程语言,在主机上调试其他平台上的程序时就需要相应的设置。这种跨平台的调试在嵌入式开发时尤为重要,这里对跨平台的Qt调试作一个简单的介绍。
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

    1
    2

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)

    1

解决方法参考应用调试之使用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

    1
    2
    3
    4

    说明PTRACE_GETSIGINFO是在交叉编译工具链:linux/ptrace.h文件里定义的,那么可能是头文件没有包含好吧!
    我们到gdbserver下的linux-arm-low.c里面一看,可不是嘛,只有:#include 而没有:#include ,于是加上:#include ,再次编译: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

    1
    2

2. 设置主机端Qt Creator

进入调试-->开始调试-->Attach To Running Debug Server
启动调试器
端口号是上一步骤中设置的端口号;Override server address是开发板的IP地址;本地执行档是程序的二进制文件,要和开发板中执行的一致;开发套件中的调试器要选择上面编译好的arm-linux-gdb;
构建套件
点击OK就可以在主机上调试开发板中的程序了。
————————————————
 

你可能感兴趣的:(qt)