Tomacco

Docs Operation reference debug operations

debug operations#

10 operations. Generated from assets/operations.json; all areas.

On this page (10)

debug.start#

Start debugger

Start or reuse a persistent JDWP Android/JVM, native Android LLDB, or local LLDB Swift/native debug session. Android sessions exclusively own their device until disconnected.

Annotations: writes, not idempotent, open world.

ArgumentTypeRequiredDefaultDetails
backendstringyesone of jdwp, lldb, android-lldb
devicestring
bundle_idstring
launchbooleantrueJDWP: restart and wait for the debugger. Android LLDB: launch only if the app is not already running, then attach. Existing native app processes are preserved.
portinteger1 to 65535
adapterstring
programstringLocal executable, or matching unstripped ELF library for android-lldb.
cwdstring
argsarray of stringup to 100 items
pidinteger1 to 2147483647
stop_on_entrybooleantrue
environmentobject
source_maparray of arrayup to 100 items
symbol_pathsarray of stringup to 20 items; Additional local directories containing matching unstripped Android native libraries.
tomaccoctl call debug.start '{"backend":"jdwp"}'

debug.list#

Debug sessions

List persistent debug sessions and detect exited workers.

Annotations: read-only, idempotent, open world.

Takes no arguments.

tomaccoctl call debug.list

debug.state#

Debugger status

Read current stop state, target and active thread.

Annotations: read-only, idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
tomaccoctl call debug.state '{"session":"<session>"}'

debug.events#

Debugger events

Read bounded, cursor-based debugger events.

Annotations: read-only, idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
afterinteger00 to 9007199254740991
limitinteger1001 to 1000
tomaccoctl call debug.events '{"session":"<session>"}'

debug.breakpoints#

Set breakpoints

Replace breakpoints in a Java/Kotlin class name (JDWP) or absolute source file (LLDB); unloaded classes remain pending until prepared.

Annotations: writes, not idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
sourcestringyesnon-empty
linesarray of integeryesup to 200 items
tomaccoctl call debug.breakpoints '{"session":"<session>","source":"<source>","lines":[1]}'

debug.threads#

Read threads

Read target threads and identifiers.

Annotations: read-only, idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
tomaccoctl call debug.threads '{"session":"<session>"}'

debug.stack#

Read call stack

Read source frames for a stopped thread.

Annotations: read-only, idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
thread_idstring
limitinteger301 to 100
tomaccoctl call debug.stack '{"session":"<session>"}'

debug.variables#

Read variables

Read frame locals (JDWP), frame scopes (LLDB), or expand an object/scope reference.

Annotations: read-only, idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
thread_idstring
frame_idstring
referencestring
startinteger00 to 100000
countinteger1001 to 1000
tomaccoctl call debug.variables '{"session":"<session>"}'

debug.evaluate#

Evaluate expression

LLDB evaluates expressions; JDWP resolves a local variable or dotted field path without executing target methods.

Annotations: writes, not idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
thread_idstring
frame_idstring
expressionstringyesnon-empty, up to 10000 characters
tomaccoctl call debug.evaluate '{"session":"<session>","expression":"<expression>"}'

debug.control#

Control debugger

Pause, continue, step or detach. Disconnect resumes the target without terminating it.

Annotations: writes, not idempotent, open world.

ArgumentTypeRequiredDefaultDetails
sessionstringyesmatching [a-f0-9]{32}
thread_idstring
actionstringyesone of pause, continue, next, stepIn, stepOut, disconnect
tomaccoctl call debug.control '{"session":"<session>","action":"pause"}'

View this page as Markdown on GitHub