用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 !\n";
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】:调试最后一次执行的程序。