# Debug Platformio

> 当需要通过 PlatformIO 内置调试功能对目标板进行 GDB 调试时使用，支持下载暂停、附加和崩溃现场分析。

- Skill: `leokemp223/debug-platformio` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add leokemp223/debug-platformio`
- Raw SKILL.md: https://api.skillmd.com/api/skills/leokemp223/debug-platformio/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: leokemp223 (https://skillmd.com/u/leokemp223)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/leokemp223/debug-platformio

---


# PlatformIO 调试

## 适用场景

- `Project Profile` 中标明 `build_system: platformio` 或工作区中存在 `platformio.ini`。
- 用户需要对目标板进行在线调试（单步、断点、查看寄存器和变量）。
- 需要分析崩溃现场（HardFault 寄存器、调用栈）。

## 必要输入

- PlatformIO 工程目录（包含 `platformio.ini`）。
- 可选的环境名称和调试模式。

## 自动探测

- 自动定位 `pio` CLI。
- 解析 `platformio.ini` 中的 `debug_tool` 配置。
- PlatformIO 自动管理调试服务器（OpenOCD/pyOCD/J-Link GDB Server），无需手动配置。

## 执行步骤

1. 先阅读 [references/usage.md](references/usage.md)，确认本次操作。
2. 探测调试环境：
   ```bash
   python scripts/pio_debugger.py --detect --project-dir <工程目录> --env <环境名>
   ```
3. 执行调试：
   ```bash
   python scripts/pio_debugger.py --project-dir <工程目录> --env <环境名> --mode download-and-halt
   ```

## 调试模式

- `download-and-halt`：下载固件到目标板，暂停在入口点，输出寄存器和回溯信息。
- `attach-only`：附加到正在运行的目标，不下载固件，输出当前状态。
- `crash-context`：暂停目标，读取寄存器、完整回溯和 Cortex-M Fault 寄存器（CFSR/HFSR/MMFAR/BFAR）。

## 失败分流

- `connection-failure`：调试器未连接或设备无响应。
- `debug-not-supported`：板卡不支持调试或未配置 debug_tool。
- `debug-failure`：调试会话异常终止。

## 输出约定

示例输出格式：

```
调试完成 ✅
  工程: ESP32_DEV → 环境: esp32dev
  板卡: esp32dev | 调试工具: esp-prog
  模式: download-and-halt
  关键观察: 5 条（寄存器、回溯帧）
```

## 交接关系

- 从 `build-platformio` 接收编译成功的工程信息。
- 调试发现问题后可回交给 `build-platformio` 修改代码重新编译。

