paavohtl Claude Opus 4.6 (1M context) commited on
Commit
7e1788d
·
1 Parent(s): 7795724

docs: add frame debugging commands to debug-cli skill

Browse files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Files changed (1) hide show
  1. .claude/skills/debug-cli/SKILL.md +18 -0
.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.