关于gdb:基于Renode调试OneOSLite物联网操作系统

47次阅读

共计 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

正文完
 0