调试概述
本文档概述 TGOSKits 当前的 VS Code 本地调试方案,重点说明它的设计目标、组件边界和平台分流思路。
设计目标
当前调试方案主要围绕四个目标展开:
- 以 VS Code 作为统一入口,不要求开发者手工先起 QEMU 再附加调试器
- 把构建产物准备和调试会话管理拆开,避免首次冷编译时附加时序不稳定
- 保持
cargo xtask作为运行入口,与仓库现有命令体系对齐 - 在 Linux 与 Windows 上都提供可用的集成终端调试体验
组件划分
调试链路由三部分组成:
.vscode/launch.json.vscode/tasks.json.vscode/session.py
三者的职责边界是刻意分开的:
launch.json只描述“调试器如何附加、在哪些位置下断点”tasks.json只描述“进入调试前需要先完成哪些前置动作”session.py只描述“一个 QEMU debug 会话如何启动、等待、结束和清理”
这样设计的原因是:VS Code 本身不擅长处理“长时间后台任务 + 端口就绪检测 + 失败清理”的组合逻辑,把这些行为收口到脚本层更稳定,也更便于跨平台统一。
调试配置组织
当前预置的 AArch64 调试配置包括:
ArceOS MainArceOS BootStarryOS MainStarryOS BootAxvisor MainAxvisor Boot
这些配置都会自动完成:
- debug 构建
- QEMU 启动
- GDB stub 打开
- LLDB 附加
- 调试结束后的 QEMU 清理
设计上每个系统都提供 Main 和 Boot 两类入口:
Main聚焦主执行路径,适合验证功能逻辑Boot聚焦更早的初始化阶段,适合观察平台入口、runtime 初始化和系统装配顺序
这种划分的目的不是单纯增加入口数量,而是让断点位置可以系统性前移或后移,降低不同问题类型之间切换调试上下文的成本。