cortex-A8 ARM核 opencv程序移植 (4)

4. GDB 远程调试

我是参考的这篇文章:http://bashell.sinaapp.com/archives/eclipse-cdt-gdbserver-arm-remote-debugging-1.html

 

做嵌入式Linux开发也不用再羡慕windows程序员VS集成开发环境的强大,我们同样能够搭建出给力的IDE。

今天在这里记录一下我使用Eclipse-cdt,gdb,gdbserver搭建远程arm调试的过程。

首先介绍下,嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端可以理解为本机,Target端为嵌入式设备。
Host端使用arm-linux-gdb,Target 端使用gdbserver。
调试时,应用程序在嵌入式目标系统上通过运行,而gdb调试在Host端。

    1. 编译gdb
      在GNU官网下载最新版GDB ,我这里下载的是7.2版本gdb-7.2.tar.gz
$ tar xvf gdb-7.2.tar.gz
$ cd gdb-7.2
$ ./configure --target=arm-linux --prefix=/home/aliang/arm-gdb
$ make -j2
$ make install

可以通过export命令将/home/aliang/arm-gdb/bin目录加入PATH,使arm-linux-gdb可以直接使用,也可以直接拷贝到/usr/bin 或arm-linux-gcc同目录

    1. 编译gdbserver
$ cd gdb/gdbserver
$ ./configure --host=arm-linux
$ make -j2
这里没有定义安装目录,因为gdbserver是运行在嵌入式设备端的。
make之后,gdbserver程序就在当前目录下,拷贝到tftpd目录后在设备端通过tftp命令下载
  1. 调试程序
    通过加-g参数 交叉编译带调试信息的程序

    $ arm-linux-gcc -g ipcam.c -o ipcam

    拷贝到设备端后,使用gdbserver打开程序

    $gdbserver <host-ip>:10000 ipcam

    主机使用arm-linux-gdb调试程序

    $ arm-linux-gdb ipcam

    输入gdb远程调试指令

    (gdb) target remote <target-ip>:10000

    这时,设备端打印

    Remote debugging from host 192.168.1.102

    说明远程调试已经建立起,可以开始在host端调试

  2. gdb指令可真多,我不是牛人,自认没那技术通过指令就能调试出想要的结果,结合eclipse的图形调试界面快速寻找答案才是我想要的。

介绍了如何编译、运行arm-linux-gdb 和 gdbserver,这一篇中介绍怎样结合Eclipse-cdt进行图形化编译调试

首先当然是使用CDT创建项目并添加源文件。

  1. 在左侧 Project Explorer 的项目名上点右键->Properties 进入项目属性设置
  2. 选择 C/C++ Build->Settings 在Tool Settings中,将Toolchain修改为arm版本
    GCC C Compiler :arm-linux-gcc
    GCC C Linker : arm-linux-gcc
    GCC C Assembler :arm-linux-ar

    其他选项默认就好,有需要自己修改



  3. [可选]Build Steps 这里可以填些编译步骤,我这里希望编译后自动将程序拷贝到tftpd的目录以方便arm端直接下载
    那么就在Post-build steps -> Command: 中填写

    cp ipcam /tftpboot

编译部分修改完,接下来是调试部分

  1. 选中项目->菜单栏 ”Run“->Debug Configurations…
  2. 双击C/C++ Applecation 新建一个配置,Eclipse会根据当前选择的项目初始化大部分配置,这里只需修改Debugger配置页
  3. 选择进入Debugger配置页
    Debugger:
    选择gdbserver Debugger
    Debugger Options:
    GDB Debugger 这项,如果上一篇中编译出的的arm-linux-gdb拷贝到PATH的目录,或者将arm-linux-gdb的目录加入到PATH,那么这里直接填arm-linux-gdb就可以了,否则浏览目录选择带路径的命令Shared Libraries这项,可以添加库路径,比如调试过程中要步入外部函数,就必须在这里给出带调试信息的库文件路径,否则会找不到该函数的定义

    Connection这项是关键:Type选 TCP,Host name or IP address填arm端的ip,端口号默认即可,这个端口号将在arm端运行gdbserver时填写
  4. 所有配置完成,点Apple 再关掉配置页

开始调试

在arm端运行程序

1. # tftp -g -r ipcam 192.168.1.100
//因为这里是用tftp共享文件,我用的是NFS,所以此句可以不用。
 
  1. # gdbserver 192.168.1.100:10000 ipcam

    192.168.1.100是主机ip 10000是之前设定的端口

  2. 在Eclipse开始调试

 

 

注:在arm端,也就是putty串口处,输入gdbserver 192.168.30.68:10000 main .在eclipse 下载程序,然后就可以看到可以调试了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值