用Eclipse和GDB构建ARM交叉编译和在线调试环境

环境介绍

  • 主机:ubuntu 16.04 虚拟机
  • 板卡:hisi3559A

安装Eclipse

安装jdk

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update  
sudo apt-get install openjdk-8-jdk 

判断JDK是否安装成功:

java
javac

安装eclipse、eclipse-cdt

sudo apt-get install eclipse
sudo apt-get install eclipse-cdt

创建交叉应用工程

在 Eclipse 主界面点击菜单 File > New > C/C++ Project,在弹出的“C/C++ Project”对话框中,输入项目名称。选择一个项目类型(如Executable/Empty Project),在 Toolchains 中一定要选** Cross GCC**,这是CDT对交叉环境的支持,提供了额外的功能,以方便嵌入式应用程序的开发。
点击下一步,来到“Select Configurations”页面,我们采用默认,直接下一步,来到“Cross GCC Command”的设置。这里我们可以填写交叉编译工具链的交缀和路径,如:

aarch64-himix100-linux-
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin

上面的配置应该根据自己的实际情况进行。
最后点击完成,一个交叉项目就创建好了。关于交叉编译前缀和路径的设置,在项目创建后,可以在项目的属性中改变它。

测试

#include <iostream>
using namespace std;

int main(int argc, char ** argv)
{
    cout<<"This is a message !
";
    return 0;
}

点击构建,对它进行编译。编译后,我们可以在左侧的“Project Explorer”中,项目目录下的Binaries中看到编译出来的程序。把它拷贝到目标开发板上,运行,结果正确。

搭建远程调试环境

编译gdb 和 gdbserver

首选需要编译gdb 和 gdbserver。可以参考:

安装gdb-multiarch

sudo apt-get install gdb-multiarch

gdb添加C++ STL的打印支持

开发板端准备

将编译好的文件和gdbserver拷贝到开发板上,执行:

./gdbserver 192.168.199.101:1234 filename

注意,192.168.199.101是主机的ip,filename 是可执行文件的名称。

Eclipse设置

在Eclipse中选择一个项目,点击菜单 Run > Debug Configurations,在左侧的Dubug类型中找到“C/C++ Remote Application”,右击点“New”,创建一个远程调试配置,如下图:




之后就可以进行调试了。

附录

取消语法检查

通常如果我们的都是使用makefile进行编译的,而Eclipse只是作为一个GUI调试工具,但是使用Eclipse打开源码时,侧边栏会提示很多的语法错误,取消这些显示的方法是:
Windows->Perferces->C/C++:

快捷键

【F5】:跟踪到方法中,当程序执行到某方法时,可以按【F5】键跟踪到方法中。
【F6】:单步执行程序。
【F7】:执行完方法,返回到调用此方法的后一条语句。
【F8】:继续执行,到下一个断点或程序结束。
【F11】:调试最后一次执行的程序。

原文地址:https://www.cnblogs.com/chay/p/11605960.html