Skip to content
Pre-release. v0.1.0 is not tagged and there are no published binaries yet. Install from source. Commands on this site were run against the current main.

CLI reference

lazydap is one binary with a subcommand per debugger operation. Run it with no arguments on a terminal and you get the TUI; run it anywhere else and you get this help.

lazydap [OPTIONS] [COMMAND]
Command Does
lazydap launch Start a program under the debugger
lazydap launches List the project’s named launch configurations, or run one
lazydap status Show the daemon and its current session
lazydap disconnect End the current session
lazydap shutdown Stop the daemon and every session it owns
lazydap continue
c
Resume the program
lazydap step
next
Run the next line, stepping over any call in it
lazydap step-in
step-into
Step into the call on this line
lazydap step-out Run until the current function returns
lazydap pause Interrupt a running program
lazydap break
b
Set, list, remove or toggle breakpoints
lazydap watch
w
Add, list or remove watch expressions
lazydap stack Show the call stack of a paused program
lazydap scopes Show the variable scopes of a frame
lazydap variables Expand a scope or a structured variable
lazydap eval Evaluate an expression in the debuggee
lazydap threads List the debuggee’s threads
lazydap output Show output the debuggee has produced
lazydap logs Show the daemon’s log
lazydap doctor Check that everything lazydap needs is where it should be
lazydap version Print the lazydap and protocol versions
lazydap completions Print a shell completion script
lazydap tui Open the terminal UI. This is also what bare lazydap does on a terminal
lazydap daemon Run the daemon. Normally started automatically by the first command that needs it
Flag Description
--instance <INSTANCE> Which daemon to talk to. Defaults to one per project root, and can also be set with LAZYDAP_INSTANCE
--format <FORMAT> Output format. Defaults to table on a terminal and json when piped. One of table, json, jsonl, csv, ids.
-h, --help Print help (see a summary with ‘-h’)

--format decides how a command answers. table is for reading and its layout is not a contract; json is the contract. With no --format, lazydap picks table on a terminal and json everywhere else, so a pipeline gets JSON without asking.

continue, step, step-in, step-out and pause also take --wait and --timeout. Without --wait they return as soon as the debugger accepts the request, which is what a live UI wants and almost never what a script wants. See the --wait contract.

launch does not take --wait — it answers with its own shape once the configuration phase is done. Pass --stop-on-entry to hold the program still, then continue --wait to move it.