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 端运行
[email protected]:/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 端打印如下:
[email protected]:/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****