m.global.everframe.callFunc("addBreadcrumb", {
kind: "navigation",
level: "info",
message: "opened details",
data: { id: "42" }
})
| Field | Values |
|---|---|
kind | navigation, tap, console, network, lifecycle, error, custom. Defaults to custom |
level | debug, info, warn, error. Optional; other values are dropped |
message | Text, cut to 2048 characters |
data | An optional associative array |
The SDK keeps the latest 50 in memory — maxBreadcrumbs in
start() lowers that.
What is recorded for you
Without the instrument step, the only automatic breadcrumbs are the
navigation ones setScreen leaves and the
memory ones below.
Build-step instrumentation adds two more: key
presses, from onKeyEvent (kind tap), and the scene’s init (kind
lifecycle).
Anything else — network activity, playback state, your own log lines — comes
from your addBreadcrumb calls. Roku has no console or network capture.
Memory pressure
Where roAppMemoryMonitor is available, the SDK checks memory use every 5
seconds. It leaves a custom breadcrumb at level warn the first time use
crosses 75, 90 and 95 % of the channel’s limit — for example
memory 90% of 286 MB — and one for the OS memory warning event.
Every report also carries the latest reading in details.metadata.memory as
{ percent, limitMb }. A crash found on the next launch carries the last
reading taken before it.
Across a crash
The latest 20 breadcrumbs are written to the registry, at most once every 2 seconds (memory breadcrumbs are written at once, because an out-of-memory kill may follow within moments). A crash detected on the next launch carries the breadcrumbs of the session that ended, so a report reconstructed from the exit record still shows what happened before it. Reports caught in-process use the live breadcrumbs.