共计 1129 个字符,预计需要花费 3 分钟才能阅读完成。
前言
咱们曾经应用 renode 仿真开发 OneOS-Lite 物联网操作系统,并应用模拟出的串口,输入了Hello OneOS-Lite
。而想要更深刻地理解零碎的执行流程,或者解决程序的 bug,领有调试的伎俩,必不可少!
本篇文章将从调试的角度登程,基于 Renode,应用 gdb 调试 OneOS-Lite 物联网操作系统。通过调试 OneOS-Lite,也能够更加直白地理解她。
renode 调试反对
Renode 反对应用 GDB 调试在仿真机器上运行的应用程序。
它应用 GDB 近程协定,并反对应用最常见的 GDB 函数,如断点,观察点,单步,内存拜访等。
在实在硬件上调试最重要的区别是:当仿真的 CPU 进行时,虚构工夫不会停顿。这使得调试过程对于仿真机器来说是通明的。
编译程序
首先,当然是编译程序,这里咱们应用的是 OneOS-Lite 下的 STM32F407VG-renode 我的项目,进入该我的项目中,编译生成 elf 文件。
倡议克隆源码仓库 https://gitee.com/cmcc-oneos/OneOS-Lite,体验尝试。
创立仿真
在文章《应用 renode 仿真开发 OneOS-Lite 物联网操作系统》,咱们曾经实战操作过如何进行仿真的全过程。为了简化操作,咱们曾经把步骤写成了脚本文件 stm32f4_discovery.resc
,放在STM32F407VG-renode
我的项目中。
应用以下命令:
include @D:\gitee\OneOS-Lite\projects\STM32F407VG-renode\stm32f4_discovery.resc
连贯 gdb
在 renode 监视器中运行以下指令,咱们能够在端口 3333 上启动 GDB 服务器:
(machine-0) machine StartGdbServer 3333
咱们能够自行抉择适当的工具链启动 GDB,并连贯到远程目标(这里咱们抉择的是 CUBE 工具自带的 GDB 调试程序):
$ arm-none-eabi-gdb /path/to/application.elf
(gdb) target remote :3333
在 elf 程序的目录下,执行以上命令(这样能够罢黜门路的懊恼):
开始调试
GDB 连贯到 renode 后,仿真就能够开始了。仅仅通知 GDB 持续,并不足以启动程序,这是咱们还要通知 renode 监视器,能力得以调试持续。
(gdb) monitor start
(gdb) continue
在此之后,咱们就能够像失常应用 gdb 调试程序的样子,单步、断点、查看栈档次等等。
关注 && 分割
gitee:https://gitee.com/cmcc-oneos/OneOS-Lite
docs:https://oneos-lite.com/
公众号:CMCC-OneOS