eclipse远程调试ARM程序环境搭建

目的: 通过在windows环境下远程运行虚拟机eclipse 对ARM板上的程序进行远程调试

软件: Xmanager Enterprise 5

jdk-8u191-linux-x64.tar.gz

eclipse-cpp-2018-09-linux-gtk-x86_64.tar.gz

gdb-8.2.tar.gz

gcc-linaro-5.3.1-2016.05-i686_aarch64-linux-gnu.tar.gz 交叉编译工具

 

一、下载及安装jdk

1. 下载jdk

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html   下载 jdk-8u191-linux-x64.tar.gz

 

2. 加压jdk

#tar xvfz jdk-8u191-linux-x64.tar.gz

 

3. 将文件夹复制到 /usr/lib/jvm目录下

#mv -f jdk1.8.0_191 /usr/lib/jvm

 

4.在登陆用户kaifa 及root 用户的主目录 .bashrc中设置java环境变量

#set jdk environment

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

5. 使能环境变量 并检查JAVA 版本

#source .bashrc

#java -version

如果显示版本是1.8.0.191则配置成功,如下显示:

 

二、下载及编译gdb,gdbserver

1. 下载gdb源码 并解压

http://ftp.gnu.org/gnu/gdb/ 下载 gdb-8.2.tar.gz

2.编译调试版的arm-linux-gdb

#./configure --prefix=/opt/gdb-8.2/arm-gdb --target=aarch64-linux-gnu --program-prefix=arm-linux-

#make

# make install prefix=/opt/gdb-8.2/arm-gdb

3. 编译完成后得到可在ubuntu运行的gdb

 

4. 编译ARM板子上运行的gdbserver

进入gdb-8.2/gdb/gdbserver, 创建配置编译脚本 mybuilt

export AS=aarch64-linux-gnu-as

export AR=aarch64-linux-gnu-ar

export CC=aarch64-linux-gnu-gcc

export CXX=aarch64-linux-gnu-g++

export LD=aarch64-linux-gnu-ld

export NM=aarch64-linux-gnu-nm

export OBJDUMP=aarch64-linux-gnu-objdump

export RANLIB=aarch64-linux-gnu-ranlib

export STRIP=aarch64-linux-gnu-strip

./configure  --target=aarch64-linux-gnu  --host=aarch64-linux-gnu

make

#chmod 777 mybuilt

#./mybuilt

在 gdb-8.2/gdb/gdbserver 目录下生成gdbserver 可执行程序,讲gdbserver程序拷贝至/usr/bin目录下, 并增加可执行权限

 

三、 下载eclipse

从 https://www.bluage.com/downloads

Eclipse IDE for C/C++ Developers栏下选择eclipse-cpp-2018-09-linux-gtk-x86_64.tar.gz 下载

#tar xvfz  eclipse-cpp-2018-09-linux-gtk-x86_64.tar.gz  加压后运行 eclipse

 

四、下载安装Xmanager

Xmanager作用是远程登陆ubuntu和windows下远程运行ubuntu里的eclipse

安装完成后首先运行 Xmanager – Passive

Xshell

然后运行 Xshell  []打开]->属性 进行如下配置

 

五、远程调试ARM端应用程序

1. 通过ssh登陆ubuntu ,并运行eclipse, (此时最好是非超级用户运行eclipse)

 

若是第一次登陆,会提示选择工作空间,工作空间目录应选择在登陆用户名的主目录下,我的是 /home/kaifa/eclipseworkspace, 否则会报错

eclipse the specified workspace derectory is either invalid or read-only

2. 创建C或C++ 程序

   2.1 File->new->C/C++ Project 创建一个新的C/C++工程

 

2.2 设置工程名字

 

2.3 选择Debug版本程序

 

2.4 设置交叉编译路径

 

4. 在工作目录下创建一个测试程序helloword.c, 并按F5 刷新

#include <stdio.h>

#include <stdlib.h>

int main(void){

printf("********hello world*******11111****\n");

printf("********hello world*******22222****\n");

printf("********hello world*******33333****\n");

printf("********hello world*******44444****\n");

printf("********hello world*******55555****\n");

printf("********hello world*******66666****\n");

return 0;

}

5. 构建Hello word, 并将生成的Debug版的helloword拷贝至ARM ,并在ARM端运行helloword

Project->Build all   在/home/kaifa/eclipseworkspace/Helloword/Debug 生成 helloword

 

在ARM 端运行

root@tegra-ubuntu:/home/nvidia# gdbserver 192.168.2.147:12345  ./helloword

Process ./ helloword created; pid = 2849

Listening on port 12345

 

其中:192.168.2.147 为ARM 板子的IP

12345 为监听的端口号 

 

5. Debug 配置

在Run-> Debug configurations 下的 C/C++ remote application 下的 select other下选择

 

选择GDB(DSF) Manul Remote Debugging Launcher

 

2.配置gdb 和 ARM板子的IP和端口

 

然后点击Debug 就可以进行远程调试 ARM板子的程序了,单步运行 则 ARM 端打印如下:

root@tegra-ubuntu:/home/nvidia# gdbserver 192.168.2.147:12345 ./helloword

Process ./ helloword created; pid = 2849

Listening on port 12345

Remote debugging from host 192.168.2.72

Remote side has terminated connection.  GDBserver will reopen the connection.

Listening on port 12345

Remote debugging from host 192.168.2.72

********hello world*******11111****

********hello world*******22222****

********hello world*******33333****

********hello world*******44444****

********hello world*******55555****

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值