使用eclipse 调试zephyr

本文介绍如何在ubuntu 16.04环境下使用eclipse+gdb配置调试zephyr qemu

准备 链接到标题

下载&安装eclipse 链接到标题

使用国内镜像下载eclipse CDT,解压后直接可用 http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/oxygen/2/eclipse-cpp-oxygen-2-linux-gtk-x86_64.tar.gz

安装GNU MCU 链接到标题

启动eclipse后,通过菜单选择"帮助"->“Eclipse Marketplace”, 在serach页面查关键字“GNU MCU” 选择GNU MCU Eclipse安装 MCU

下载 & 安装arm gdb 链接到标题

在https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads 下载gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2,然后解压缩到目录*/opt/gcc-arm-none-eabi-7-2017-q4-major*

调试程序准备 链接到标题

参见文章Zephyr创建应用&模拟运行,编译完成后执行下面命令后qemu启动gdbserver等待gdb连接

ninja debugserver

Eclipse配置 链接到标题

通过菜单选择"运行"->“调试配置"在弹出的框内选择"GDB Hardware Debugging"然后点击新建启动配置,然后按如下页面配置

Main 链接到标题

  • 选择要debug的elf
  • 关闭自动编译:因为没有通过eclipse来编译 main

Debugger 链接到标题

  • 选择gdb
  • 关闭target remote,这里的target remote要指定jtag device, 不使用,在后面的startup设置中通过初始化命令来target remote QEMU debugger

Startup 链接到标题

  • 关闭reset选项:由于被debug的是qemu对象已经在等待debug,且不需要load image因此不能选择reset
  • 关闭halt,同上原因无需halt,执行target remote后会自动halt在第一句
  • 不做image load:原因同第一点
  • 添加target remote命令,连接qemu gdbserver startup

代码源 链接到标题

  • 添加被调试代码的路径 source 配置完毕后点击"应用"保存配置

调试 链接到标题

通过菜单选择"运行”–>“调试"进入调试界面,下面贴出调试的画面,基本的调试控制和调试窗口都有不做详细说明了 dasm dc

参考 链接到标题

http://docs.zephyrproject.org/application/application.html#eclipse-debugging