使用VSCode调试Zephyr

本文介绍如何在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连接

ninja debugserver

VSCode连接调试 链接到标题

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

注意 链接到标题

  • 目前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/