create activates instruments on matching devices, tail or get reads what comes back, stop ends it early rather than waiting out --for.
create
Activates instruments on the devices matching a target. The request is live until it expires — devices matching it converge on the instruments named here, the ones already running immediately, the rest the next time they check in.Hunting a hitch: the default
concurrency.mainThreadHang:thresholdMs=2000 only catches full freezes — lower it (250–500) for smaller stutters, and pair it with runtime.stackSamples (what ran) and uikit.view.layoutPass or swiftui.host.updates (why). An idle capture finds nothing — drive the UI during the window.list
The default whenrequest is run with no subcommand. Lists live requests.
get
Reads the readings a request captured. The stored container is fetched whole and rendered here — the same rendering the dashboard downloads.
At a human terminal, the table renders colored and grouped by launch — a real view-hierarchy tree for
viewHierarchy readings, not a flat dump. Piped or scripted, it’s plain JSON.
tail
Prints readings as they arrive, then stops. One reading per line as JSON, so a stream cut short still parses up to where it stopped.
Why it ended is written to stderr; the readings are on stdout.