Debugging
Inside Skink: Ctrl+E, then help debugging.
| Key | Does | |---|---| | F5 | start (the last configuration, else pick one), or continue | | Shift+F5 | stop the program (twice: kill the adapter) | | F10 / F11 / Shift+F11 | step over / into / out, while debugging | | F6 | pause while it runs | | F9 | breakpoint on the line (or click the sign column) | | Alt+F9 | condition, hit count or logpoint | | Alt+L | the debug panel | | Alt+K | while paused: the value at the cursor |
Outside a session F10, F11, Shift+F11 and F6 keep their usual jobs.
While paused the stopped line is highlighted and local values show at the ends of the lines above. Breakpoints follow edits and are saved in the session with the watches.
## The panel
State, call stack (Enter shows a frame), variables (Enter / Space expands), watch (w adds, d removes), breakpoints (Enter jumps, d removes), console (e evaluates).
## Commands
`
:debug- pick a configuration
:debugNAME- start one
:debugrestart:debugpause ·:debugpanel:debugeval EXPR:debugwatch EXPR
:breakpoint if i > 3 :breakpoint hits 5 :breakpoint log x={x}
:breakpointclear:breakpointclearall
`
## Configurations
From .skink/launch.json and .vscode/launch.json (VS Code subset: name, type, request launch / attach, preLaunchTask, per-OS overrides; other fields go to the adapter with ${...} expanded). Without one: each cargo binary, the Python file or pytest test at the cursor, the Go package or test at the cursor, and a native program built next to the file (cc -g x.c -o x).
| Adapter (on PATH) | For | type | |---|---|---| | gdb 14+ (gdb -i dap) | C, C++, Rust, Zig | gdb | | lldb-dap | LLVM | lldb-dap | | codelldb | CodeLLDB | lldb | | debugpy (pip install debugpy) | Python | debugpy | | dlv (dlv dap) | Go | go |
js-debug is not supported yet. Programs an adapter runs "in a terminal" open in a terminal tab.