使用VSCode调试Zephyr

Creative Commons
本作品采用知识共享署名

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

安装

VSCode

参考Ubuntu上使用VSCode

arm gdb

参考使用eclipse-调试zephyr下载 & 安装arm gdb章节

调试程序虚拟机

参考Zephyr创建应用&模拟运行

VSCode配置

添加要调试的Zephyr项目

通过文件->将文件夹添加到工作区选择要调试的zephyr项目,例如~/work/project/zephyr_app/zephyr_sample

编辑debug配置文件

按照下图示例打开launch.json
config
按照下图示例修改各项配置
configfile

运行调试

运行主机

这里的主机是qemu虚拟机,按照调试程序虚拟机的方法编译后,在build下执行下面命令后qemu启动gdbserver等待gdb连接

1
ninja debugserver

VSCode连接调试

选择调试->启动调试或在直接按F5就可以启动调试,调试界面如下,可以设置断点,单步或观察变量和callstack。
debug
VSCode提供的debug界面只有查看变量,符号,堆栈,和断点管理,更多gdb的功能可以通过调试控制台直接执行gdb命令来完成,如下图:
console

注意

  • 目前Native Debug不能启动时stop到第一句代码,会提示下面信息,因此需要在启动debug前自己在第一条指令上设置一个断点

    1
    Not implemented stop reason (assuming exception): undefined
  • VSCode无法识别汇编语言,导致无法在汇编语言上面下断点。通过安装对应的汇编语言插件来解决,我用的ARM平台因此安装的是ARM插件

  • 为了调试必装其它插件C/C++, Native Debug

参考

https://github.com/WebFreak001/code-debug
http://austinhanson.com/vscode-gdb-and-debugging-an-os
https://stackoverflow.com/questions/38089178/is-it-possible-to-attach-to-a-remote-gdb-target-with-vscode
http://lgl88911.gitee.io/2018/05/06/Ubuntu%E4%B8%8A%E4%BD%BF%E7%94%A8VSCode/
http://lgl88911.gitee.io/2018/03/28/%E4%BD%BF%E7%94%A8eclipse-%E8%B0%83%E8%AF%95zephyr/
http://lgl88911.gitee.io/2018/03/24/Zephyr%E5%88%9B%E5%BB%BA%E5%BA%94%E7%94%A8-%E6%A8%A1%E6%8B%9F%E8%BF%90%E8%A1%8C/