嵌入式Linux-Eclipse下gdb调试arm开发板

2019-07-12 15:21发布

eclipse版本:2018-09(4.9.0)
gdb版本:7.8.1
Eclipse下调试的前提是主机和开发板搭建好了gdb调试环境,搭建环境点击这里

一、创建C工程

File->New->Project 创建工程,工程类型选择 Executeable Empty Project,工具链选择Cross GCC


接下来next->next,编译工具的前缀改为arm-linux-,然后填写工具链的完整路径。

新建源文件main.c,写一个打印的测试程序,开始编译,从输出信息可以看到成功生成了目标文件,这个目标文件可以直接在开发板运行。

二、配置GDB

2.1 配置服务器端gdb

来到调试配置页面,右击C/C++ Remote Application新建一个远程调试,Connection选项选择远程主机,然后点击New->Create a new connection->SSH->填写开发板IP地址,调试端口有一个默认端口,可以不用设置。设置完远程后,填写开发板可执行文件的路径,要求开发板的可执行文件和主机本地的文件相同。我使用的是nfs远程挂载文件夹的方式,这样就不用复制来复制去了。

2.2 配置本地gdb

本地的GDB调试工具更改为arm-linux-gdb就可以了。

三、开启GDB调试

点击绿虫子旁边的倒三角,选择pro1 Debug即可开启调试,eclipse下gdb调试比较方便的是开发板的打印信息都会在eclipse的控制台上显示,同时将continue、next、step之类的gdb调试指令转换为了GUI界面来操作,大大提高调试效率。

遇到的问题

1.ubuntu系统中的eclipse工程最好和开发板的工程一致。当我把eclipse生成的可执行文件单独提出来到板子调试时,eclipse总是提示Launching xxx has encountered a problem. Errors occurred during the build.,具体原因不详,使用完整工程就没什么问题。
2.将ubuntu中的文件夹使用nfs方式挂载到开发板中,在gdb调试时提示mount: mounting 192.168.40.179:/xxx on /xxx failed: Device or resource busy并且无法调试,在我更改了gdb调试端口后就可以调试了。

3.提示Could not start gdbserver on the remote host.时,在开发板终端中执行ps得到调试相关进程,使用kill命令终止,再次执行gdb调试即可。
在这里插入图片描述