eclipse+gdbserver图形化调试嵌入式linux应用程序
开发环境
- PC端Linux安装在VM虚拟机上,Ubuntu 12.04。
- 嵌入式开发板->天嵌TQ210。
- 开发板linux内核->2.6.35.7。
1.安装Eclipse
1.1 登录
http://www.eclipse.org/ide/,选择C/C++的IDE下载。
1.2 左边版本尽量选择新一点的,之前安装了Helios版本的发现实现不了。当前最新版本为Oxygen(时间:7/12/2017),右边的操作系统版本根据自己的虚拟机Linux操作系统选择,我这里是32位,选择了Linux 32-bit。
1.3 下载完安装包,通过SSH、samba、共享文件等方式拷贝到PC的Linux系统下。压缩包名字为eclipse-cpp-oxygen-R-linux-gtk.tar.gz。
1.4 进入压缩包所在目录,解压到该目录下。
# cd /home/ymq/arm_tools
# tar -xzvf eclipse-cpp-oxygen-R-linux-gtk.tar.gz
1.5 在进入刚刚解压缩出来的eclipse文件夹启动eclipse应用之前,还要做一件事,就是安装java运行时的环境JRE。否则会出现以下错误提示。
1.6 在安装完JRE就可以启动eclipse软件了,进入解压出来的文件夹。
# cd /home/ymq/arm_tools/eclipse
./eclipse
2.PC端linux安装arm交叉编译工具
2.1 这里使用的是天嵌公司提供的交叉编译工具,在开发板资料的..TQ210_CDLinux平台工具文件下的4.4.6_TQ210_release_20120720.tar.bz2文件,拷贝到PC机的linux下解压缩。在此省略操作方法。
2.2 修改/etc/profile文件,把安装交叉编译链工具的bin目录设置到环境变量中。
# sudo vim /etc/profile
2.3 在profile文件的末尾,增加以下一行。我这里把交叉编译工具链解压缩到根目录。
export TQ210_CROSS=/opt/EmbedSky/4.4.6/bin
export PATH=$PATH:$TQ210_CROSS
2.4 回到终端,更新修改的/etc/profile文件。
# sudo source /etc/profile
2.5 检查是否已经安装好交叉编译连。出现如下图红 {MOD}框,说明已经安装成功。
# amr-linux-gcc -v
3.PC端安装gdbclient
3.1
http://ftp.gnu.org/gnu/gdb/,下载arm-linux-gdb-7.5.tar.gz。
3.2 解压缩,配置、编译gdbclient。
# tar -xzvf arm-linux-gdb-7.5.tar.gz
# cd ./arm-linux-gdb-7.5/gdb-7.5
# ./configure --target=arm-linux --prefix=/usr/local/arm-gdb –v(--target配置gdb的目标平台,--prefix安装路径)
# make && make install
3.3 配置、编译gdbserver。
# cd arm-linux-gdb-7.5/gdb-7.5/gdb
# ./configure --target=arm-linux --host=arm-linux(--target=arm-linux表示开发板平台,--host表示PC端运行的是arm-linux-gdb,不需要配置—prefix,因为gdbserver不在PC端安装运行)
# make CC=/opt/EmbedSky/4.4.6/binarm-linux-gcc(这里的交叉编译链路径根据自己安装位置修改)
3.4 编译成功之后,在arm-linux-gdb-7.5/gdb-7.5/gdb文件夹下出现gdbserver应用,把它通过nfs或者其它的方式,拷贝到开发板中去,一般放在开发板linux系统的/usr/bin目录下。
此部分参考文献:
http://blog.csdn.net/quyang0602/article/details/7368893
4.eclipse通过gdbclient连接开发板
4.1 打开eclipse,新建一个c语言工程。File->New->C Project。
4.2 填写工程名,选择工具链为Cross GCC。
4.3 Next。
4.4 Finish。
4.5 给新建工程添加源文件。选中工程,File->New Source File,输入文件名,记得加上后缀,Finish。
4.5 输入简单的打印,编译。
#include
int main(void)
{
printf("Hello World!
");
return 0;
}
4.6 eclipse控制台输出编译结果。
4.7 Run->Debug Configurations,配置调试。
4.8
4.9 Debug Configurations->Debugger->Main,在GDB debugger选择gdb安装的路径,并制定arm-linux-gdb。
4.10 Debug Configurations->Debugger->Connection,类型选择TCP,主机地址即开发板的IP地址,端口号设置为10000。
4.11 配置完eclipse,保存之后关闭。接下来启动开发板的gdbserver。
4.12 用串口工具连接到开发板。通过nfs把PC端linux的eclipse工作文件夹挂载到开发板的/mnt/workspace目录下。<此操作在开发板上操作>。
[root@EmbedSky Debug]# mount -t nfs -o nolock 192.168.0.116:/home/ymq/workspace /mnt/workspace
4.13 进入/mnt/workspace/hello/Debug目录。<此操作在开发板上操作>。
[root@EmbedSky Debug]# cd /mnt/workspace/hello/Debug
4.14 启动gbdserver调试hello。
[root@EmbedSky Debug]# gdbserver :100000 hello
Process hello created; pid = 150
Listening on port 100000
4.15 eclipse启动调试。Run->Debug,启动调试。此步要在开发板启动了gdbserver之后执行,否则无法连接到开发板上,也无法出现如下提示。
4.16 eclipse成功连接到开发板上,按单步执行(F6),在开发板的终端可以看到输出。
[root@EmbedSky Debug]# gdbserver :10000 hello
Process hello created; pid = 141
Listening on port 10000
Remote debugging from host 192.168.0.116
Hello World!
4.17 点击Run->Terminate(Ctrl+F2),终止调试。
此部分参考文献:嵌入式Linux开发教程 (上册) .pdf《周立功出版的》,第十章第四节。链接:
http://www.zlg.cn/ipc/down/down/id/92.html
到此,完成了在eclipse上远程调试嵌入式linux应用程序,图形化的界面比命令行方便,清晰。但是对电脑硬件资源有一定要求,配置不高的话,虚拟机运行eclipse会比较卡。