使用VSCode调试Zephyr
本文介绍如何在ubuntu 18.04环境下使用zephyr+gdb配置调试zephyr qemu
安装 链接到标题
VSCode 链接到标题
arm gdb 链接到标题
参考使用eclipse-调试zephyr下载 & 安装arm gdb章节
调试程序虚拟机 链接到标题
VSCode配置 链接到标题
添加要调试的Zephyr项目 链接到标题
通过文件->将文件夹添加到工作区选择要调试的zephyr项目,例如~/work/project/zephyr_app/zephyr_sample
编辑debug配置文件 链接到标题
按照下图示例打开launch.json
按照下图示例修改各项配置

运行调试 链接到标题
运行主机 链接到标题
这里的主机是qemu虚拟机,按照调试程序虚拟机的方法编译后,在build下执行下面命令后qemu启动gdbserver等待gdb连接
ninja debugserver
VSCode连接调试 链接到标题
选择调试->启动调试或在直接按F5就可以启动调试,调试界面如下,可以设置断点,单步或观察变量和callstack。
VSCode提供的debug界面只有查看变量,符号,堆栈,和断点管理,更多gdb的功能可以通过调试控制台直接执行gdb命令来完成,如下图:

注意 链接到标题
- 目前Native Debug不能启动时stop到第一句代码,会提示下面信息,因此需要在启动debug前自己在第一条指令上设置一个断点
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 https://lgl88911.pages.dev/posts/ubuntu%E4%B8%8A%E4%BD%BF%E7%94%A8vscode/ https://lgl88911.pages.dev/zephyr/%E4%BD%BF%E7%94%A8eclipse-%E8%B0%83%E8%AF%95zephyr/ https://lgl88911.pages.dev/zephyr/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/