查看: 8935|回复: 11

手把手教你远程调试BPi应用程序

  [复制链接]
  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-9-16 21:48:11 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 brucehelen 于 2014-9-16 21:52 编辑

    这个文章有点长,不过大部分是截图,大家不用怕。
    看完这篇文章,你将学会如何在Ubuntu下远程调试BPi程序,就像VC调试程序的效果一样!是不是很爽?
    下面的文字都是我一个一个字敲出来的,如果有问题,欢迎大家跟贴讨论!
    包含要点:
    1. Ubuntu12.10 Eclipse安装
    2. Eclipse C/C++开发
    3. 交叉编译
    4. GDB远程调试BPi开发板

    大家在写linux程序时,大部分都是使用vi编辑器直接编辑,然后gcc编译,至多再写个Makefile管理一下工程。我们看到开源软件都是这样工作的。
    对于从windows下过来的程序员都有个疑问:linux下有没有像windows VS那样方便的IDE呢?
    答案是有的--Eclipse,只不过搭建的步骤稍微繁琐一点,没有Windows那样的下一步下一步来的爽。
    下面我就为大家将步骤列出来。
    1. 安装JDK
    1Eclipse基于java,首先需要安装JDK,在官网下载最新的JDK8u20
    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    1.png
    2)解压文件
    $ sudo mkdir /usr/lib/jvm
    $ sudo mv jdk-8u20-linux-i586.tar.gz/usr/lib/jvm/
    $ cd /usr/lib/jvm/
    $ sudo tar -zxf jdk-8u20-linux-i586.tar.gz
    $ rm ./jdk-8u5-linux-i586.tar.gz
    3)配置java运行环境变量
    $ sudo vi /etc/environment
    environment中修改PATH,追加JDK路径,添加CLASSPATHJAVA_HOME后如下:
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/jdk1.8.0_20/bin"
    CLASSPATH="/usr/lib/jvm/jdk1.8.0_20/lib"
    JAVA_PATH="/usr/lib/jvm/jdk1.8.0_20"
    如果你的系统之前装过OpenJDK,你需要作如下操作:
    告诉系统,我们现在使用的是sunJDK,而非OpenJDK了:
    $ sudo update-alternatives--install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_20/bin/java 300
    $ sudo update-alternatives--install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_20/bin/javac 300
    $ sudo update-alternatives --config java
    2 个候选项可用于替换 java (提供 /usr/bin/java)
    选择    路径                                       优先级  状态
    ------------------------------------------------------------
    * 0     /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061 自动模式
      1     /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061 手动模式
      2      /usr/lib/jvm/jdk1.8.0_05/bin/java             300 手动模式
    要维持当前值请按回车键,或者键入选择的编号:2

    4)测试当前java配置是否正确
    $ javac –version
    javac1.8.0_20
    $ java –version
    javaversion "1.8.0_20"
    Java(TM)SE Runtime Environment (build 1.8.0_20-b26)
    JavaHotSpot(TM) Server VM (build 25.20-b23, mixed mode)
    如果能出现上面的信息,恭喜你JDK安装成功。

    2. 安装Eclipse
    1)下载 Eclipse
    http://www.eclipse.org/downloads/index.php?osType=linux&release=undefined下载合适版本,比如这里我们下载的:Eclipse IDE forC/C++ Developers。这个版本已经自带CDT插件,不需要自己安装。同理,如果你想开发java,下载这个页面上Eclipse Standard 4.4即可。
    下载下来的文件名为:eclipse-cpp-luna-R-linux-gtk.tar.gz
    2.png
    2)解压安装
    将安装包移动到安装目录
    $ sudo mv eclipse-cpp-luna-R-linux-gtk.tar.gz/usr/lib/
    进入安装目录
    $ cd /usr/lib/
    解压安装包
    $ sudo tar -zxvf eclipse-cpp-luna-R-linux-gtk.tar.gz
    删除安装包
    $ sudo rm ./eclipse-cpp-luna-R-linux-gtk.tar.gz
    解压后是个名为eclipse的文件夹
    文件夹中有两个文件需要我们注意:
    eclipse            Eclipse的启动程序,打开即可运行Eclipse
    icon.xpm        Eclipse图标,后面创建快捷方式时需要用到
    3)测试Eclipse
    $ cd /usr/lib/eclipse
    $ ./eclipse
    出现下面的WorkspaceLauncher表示安装成功。
    3.png

    4.png

    每次从这个路径启动Eclipse太麻烦,下面我们在桌面快捷菜单上建立一个Eclipse的快捷方式,这样会方便很多。
    4)创建Eclipse快捷方式
    /usr/share/applications目录下新建一个文件eclipse.desktop,加入下面的内容,然后加上可执行权限。
    $ sudochmod +x eclipse.desktop
    eclipse.desktop内容为:
    [DesktopEntry]
    Type=Application
    Name=Eclipse
    Comment=EclipseIntegrated Development Environment
    Icon=/usr/lib/eclipse/icon.xpm     //程序图标文件,改为你自己的路径
    Exec=/usr/lib/eclipse/eclipse          //eclipse程序,改为你自己的路径
    Terminal=false
    Categories=Development;IDE;C/C++;
    5.png

    这时候就能在搜索框里找到Eclipse程序了,还可以将Eclipse图标拖到旁边的快捷启动栏上,方便下次启动。
    6.png
    至此,IDE开发环境搭建好了,下面我们来看看gdb调试环境的搭建。

    3. gdbgdbserver
    远程调试linux应用程序,需要两个程序:一个是运行在x86平台的arm-linux-gdb,另一个是运行在开发板上的gdbserver
    查看BananaPi gdbserver版本:
    7.png
    开发板中默认安装了gdbserver,版本为7.4.1。为了保证最大程度的兼容性,我们在主机上也运行的gdb 7.4.1版本。
    当前官方gdb最新版本为7.8,地址:http://ftp.gnu.org/gnu/gdb/
    通过上面的地址选择下载7.4.1版本gdb-7.4.1.tar.bz2
    $ tar gdb-7.4.1.tar.bz2
    $ cd gdb-7.4
    $ ./configure --target=arm-linux
    $ make
    编译完成,在gdb目录下即可找到gdb可执行文件。
    8.png

    4. 调试环境搭建
    新建一个helloworld的工程,这个工程采用交叉编译生成arm程序映像,并且使用gdb远程调试。
    1)打开Eclipse,这里的Workspace默认即可。
    9.png
    2)新建一个C工程,File->New->CProject
    10.png
    3)因为我们要编译运行在香蕉派上的程序,所以选择交叉编译Cross GCC。点击Next
    11.png
    4)这里默认即可,点击Next
    12.png
    5)这里很重要
    Cross compilerprefix填入arm-linux-gnueabihf-
    Cross compilerpath填入交叉编译器的路径,我的交叉编译器放在这个路径下:
    /home/bruce/bin
    13.png
    6)点击Finish,在右侧的Project Explore会出现一个helloworld的文件夹。新建测试文件。
    14.png
    新建一个helloworld.c源文件,填入如下代码。
    #include <stdio.h>
    int main()
    {
        printf("Hello world1!\n");
        printf("Hello world2!\n");
        return 0;
    }
    7)编译测试
    Project->BuildAll,如果在下面Console界面中没有错误且出现arm-linux-gnueabihf-gcc字样,说明交叉编译成功。
    15.png
    其实到这里,你可以将生成的文件helloworld放入开发板测试了。下面我们开始配置远程gdb调试功能。
    16.png
    使用file命令查看helloworld的属性,可以看到文件为arm可执行文件,进一步确认编译的正确性。

    8gdb调试配置
    点击工程图标绿色小虫子旁边的箭头,选择Debug Configurations
    17.png
    双击右侧第一个菜单C/C++ Application,会出现一个helloworld Debug的标签。
    18.png

    main标签配置,按照顺序配置
    19.png
    配置Debugger标签,注意第三个标签选择正确的gdb client端。
    20.png

    21.png
    将编译好的程序Debug/helloworld放到开发板中。运行:
    $ gdbserver 192.168.1.155:10000helloworld
    192.168.1.155为客户端IP地址,10000为监听端口
    22.png
    设置断点,直接在行号前面双击即可。这里设置了三个断点。
    23.png
    选择之前配置的Debug开始调试。
    24.png

    25.png
    这个不用管,点击YES。出现Debug调试界面。
    26.png
    BPi上也出现了连接提示。
    27.png
    F6下一步,可以看到调试功能和windows下的VS基本一样。
    28.png


    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

     楼主| 发表于 2014-9-16 21:50:09 | 显示全部楼层
    累死了,28张图,申请加精啊!!!
    为了方便大家阅读,特整理成pdf文档。
    BPI GDB调试环境搭建.pdf (3.21 MB, 下载次数: 63)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-4-18 08:38
  • 签到天数: 110 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2014-9-17 11:10:22 | 显示全部楼层
    好贴必须顶,定是精华帖
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 16:41
  • 签到天数: 709 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-9-17 11:21:14 | 显示全部楼层
    文章讲的不错   顶一个
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-9-30 02:33
  • 签到天数: 444 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-11-14 10:13:22 | 显示全部楼层
          赞一个!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-11-10 21:00
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-11-14 10:24:49 | 显示全部楼层
    不错啊,平常我都是用Notepad++然后开Samba共享,直接编辑开发板上的文件。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-6-22 23:57
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-11-17 20:52:26 | 显示全部楼层
    这贴牛逼 , 支持一下
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2016-6-13 09:49
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2014-11-25 11:10:22 | 显示全部楼层
    先留个名再说           
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2014-12-12 14:24
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2014-12-12 14:34:59 | 显示全部楼层
    学习了,楼主好样的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-12-26 14:36:23 | 显示全部楼层
    长知识了,现在在用着eslipse
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-11-15 20:55 , Processed in 0.207221 second(s), 34 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.