# PC 端调试流程
`PORT=pc` 是最推荐的第一现场。它的优势是:
- 构建快,改完代码可以立刻复现
- 可以直接录制截图,方便看渲染结果
- 支持 `--headless` 运行,便于脚本化
## 单次抓图
最直接的方式是:
1. 用 `USER_CFLAGS` 临时打开调试宏
2. 运行 `output/main.exe`
3. 用 `--record` 把帧抓到目录里
示例:抓一组脏区框截图
```bash
make clean
make all APP=HelloBasic APP_SUB=slider PORT=pc \
USER_CFLAGS="-DEGUI_CONFIG_FUNCTION_RECORDING_TEST=1 -DEGUI_CONFIG_DEBUG_DIRTY_REGION_REFRESH=1 -DEGUI_CONFIG_DEBUG_REFRESH_DELAY=40"
output/main.exe output/app_egui_resource_merge.bin \
--record runtime_check_output/debug_dirty_slider 10 8 --headless
```
关键点:
- `EGUI_CONFIG_FUNCTION_RECORDING_TEST=1` 让示例里的录制动作自动跑起来,方便稳定复现交互
- `--record
` 会把 PNG 帧保存到目录里
- `--headless` 适合 CI、远程环境和批量抓图
## 可视化类调试的常用命令
### 看 PFB tile
```bash
make clean
make all APP=HelloBasic APP_SUB=slider PORT=pc \
USER_CFLAGS="-DEGUI_CONFIG_FUNCTION_RECORDING_TEST=1 -DEGUI_CONFIG_DEBUG_PFB_REFRESH=1 -DEGUI_CONFIG_DEBUG_REFRESH_DELAY=40"
```
### 看脏区范围
```bash
make clean
make all APP=HelloBasic APP_SUB=slider PORT=pc \
USER_CFLAGS="-DEGUI_CONFIG_FUNCTION_RECORDING_TEST=1 -DEGUI_CONFIG_DEBUG_DIRTY_REGION_REFRESH=1 -DEGUI_CONFIG_DEBUG_REFRESH_DELAY=40"
```
### 看触摸轨迹
```bash
make clean
make all APP=HelloBasic APP_SUB=slider PORT=pc \
USER_CFLAGS="-DEGUI_CONFIG_FUNCTION_RECORDING_TEST=1 -DEGUI_CONFIG_DEBUG_TOUCH_TRACE=1"
```
### 看实时运行信息
```bash
make clean
make all APP=HelloTest PORT=pc
python scripts/code_runtime_check.py --app HelloTest --keep-screenshots
```
## 推荐排查顺序
### 渲染范围不对
先开:
```bash
-DEGUI_CONFIG_DEBUG_PFB_REFRESH=1
-DEGUI_CONFIG_DEBUG_DIRTY_REGION_REFRESH=1
-DEGUI_CONFIG_DEBUG_REFRESH_DELAY=40
```
先确认两件事:
- 蓝框是不是比预期大很多
- 红框是不是在做全屏扫描,或者 tile 尺寸明显不合适
### 交互不对
先开:
```bash
-DEGUI_CONFIG_DEBUG_TOUCH_TRACE=1
```
然后看:
- 红线是不是经过了你预期的控件
- 轨迹起点和终点有没有被缩放、旋转或坐标映射搞偏
### 性能或脏区收益不明确
先开:
```bash
-DEGUI_CONFIG_DEBUG_DIRTY_REGION_STATS=1
```
然后配合 `scripts/perf_analysis/dirty_region_stats_report.py` 出报告。
## 运行时验证
如果不是一次性抓图,而是要稳定回归,优先用脚本。
### 单个应用或子示例
```bash
python scripts/code_runtime_check.py --app HelloBasic --app-sub slider --keep-screenshots
python scripts/code_runtime_check.py --app HelloVirtual --app-sub virtual_stage_showcase --keep-screenshots
```
输出目录在 `runtime_check_output/` 下。
### 多屏专项回归
多屏相关改动后,优先补跑:
```bash
python scripts/release_check.py --scope multi-display
python scripts/code_compile_check.py --scope multi-display --case-jobs 2
python scripts/code_runtime_check.py --scope multi-display --jobs 2 --timeout 10 --keep-screenshots
```
其中 `release_check.py --scope multi-display` 会把 compile/runtime/doc 串起来;如果你正在看副屏截图细节,继续用下面两条拆开的命令更直接。
这会只覆盖:
- `HelloMultiDisplay`
- `HelloMultiDisplayHetero`
适合验证:
- descriptor 扩展
- per-core GUI 线程
- 副屏输入路由
- 多屏录制和截图输出
### 批量跑 `HelloBasic` / `HelloVirtual`
```bash
python scripts/checks/hello_basic_render_workflow.py --app HelloBasic --suite basic
python scripts/checks/hello_basic_render_workflow.py --app HelloVirtual --suite basic
```
这个脚本除了抓图,还会检查:
- 录制动作是否存在
- 截图是不是空白
- 交互前后是否真的发生了画面变化
## 调试结果该怎么看
- `frame_*.png`
看最终渲染和调试叠加是否符合预期
- `runtime_check_output//...`
看一次录制的完整输出
- 终端日志
看 `DIRTY_REGION_STATS`、`DIRTY_REGION_TRACE` 或控件级别调试信息
如果你需要更系统地看每个脚本负责什么,继续看 {doc}`debug_scripts`。