docs: add frame debugging commands to debug-cli skill
Browse filesCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
.claude/skills/debug-cli/SKILL.md
CHANGED
|
@@ -53,6 +53,24 @@ target/i686-pc-windows-msvc/release/openwa-debug read <addr> [len] [--format hex
|
|
| 53 |
- `--format raw`: Binary output, suitable for piping to a file.
|
| 54 |
- `--port N`: Override default port 19840.
|
| 55 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
## Address Syntax
|
| 57 |
|
| 58 |
All address forms can be used with the `read` command. **Always quote the address argument** to prevent shell interpretation.
|
|
|
|
| 53 |
- `--format raw`: Binary output, suitable for piping to a file.
|
| 54 |
- `--port N`: Override default port 19840.
|
| 55 |
|
| 56 |
+
### suspend / resume / step / frame / break
|
| 57 |
+
|
| 58 |
+
Frame-level debugging commands. Pause the game at exact frame boundaries for memory inspection.
|
| 59 |
+
|
| 60 |
+
```bash
|
| 61 |
+
openwa-debug suspend # Pause at next frame
|
| 62 |
+
openwa-debug resume # Unpause
|
| 63 |
+
openwa-debug step # Advance 1 frame, then pause
|
| 64 |
+
openwa-debug step 10 # Advance 10 frames, then pause
|
| 65 |
+
openwa-debug frame # Show current frame + pause state
|
| 66 |
+
openwa-debug break 1350 # Set breakpoint at frame 1350
|
| 67 |
+
openwa-debug break clear # Clear breakpoint
|
| 68 |
+
```
|
| 69 |
+
|
| 70 |
+
**Env var:** `OPENWA_BREAK_FRAME=1350` sets a breakpoint at DLL init time. Useful for headless replays — the game auto-pauses at the target frame so you can inspect state via `read`.
|
| 71 |
+
|
| 72 |
+
**How it works:** The game thread cooperatively blocks on a Windows event at each frame boundary (in the TurnManager_ProcessFrame hook). The debug server controls the event from its TCP thread. No thread suspension APIs — just cooperative blocking.
|
| 73 |
+
|
| 74 |
## Address Syntax
|
| 75 |
|
| 76 |
All address forms can be used with the `read` command. **Always quote the address argument** to prevent shell interpretation.
|