ReferenceTroubleshooting
Troubleshooting
Diagnose connection, authentication, empty service lists, source resolution, missing events, and safety suspension.
Connectivity and authentication
| Symptom | Check |
|---|---|
| MCP unauthorized | Reconnect Clerk OAuth; for stdio, replace the operator key |
| Agent unauthorized | Confirm the service key is active and belongs to the exact scope |
| Timeout | Check DNS, outbound HTTPS, broker URL, and network egress policy |
| Health succeeds, ping fails | The endpoint is reachable but the bearer credential is invalid |
curl --fail https://liveprobe.tryastrea.tech/healthz
curl --fail https://liveprobe.tryastrea.tech/readyzlist_services returns an empty array
This is expected before any runtime agent has successfully heartbeated in the selected project and environment. Check that the application actually starts the SDK, the deployed commit is valid, and all scope values match the issued credential.
Probe status
| Status or detail | Meaning |
|---|---|
| armed | Installed and waiting for the line to execute |
| line-not-found | The runtime could not resolve the path and line |
| suspended | A runtime safety safeguard has paused the probe |
| hit-limit-reached | The configured hit limit completed |
| expired | The broker-enforced TTL elapsed |
| error | Inspect status detail and runtime logs |
A probe on a line that has not executed and a probe whose evidence is being thrown away look identical from the outside — both sit at armed forever. Distinguish them with get_safety_overview: an evidence block reporting rejectedBatches above zero means captured evidence is not reaching storage, and a caveat on that service will say so in words. No evidence block means nothing has been lost and the line genuinely is not running.
The file was found. That line has no code. Optimizing compilers routinely attribute a statement to a neighbouring line, so the line you would point at by eye is often not the one in the line table. Try adjacent lines — this is common in C++ and Rust and rare in the interpreted runtimes.
Probably a stale stack slot rather than the variable. Scalars near 0x7f0000000000 are addresses, not data. This happens in optimized Rust builds; see the Rust page for the cause and the fix. Values reported alongside it may still be correct — the two are not distinguishable from the output alone.
Runtime-specific checks
- Node: deploy external maps and verify source map directory, generated prefix, and app-root prefix.
- Python: confirm Python 3.12+ and a matching runtime source-path suffix.
- JVM: compile with debug metadata, keep JDWP private, and verify bridge attachment.
- All runtimes: confirm project, environment, service, credential, and deployed commit all describe the same process.