← ClaudeAtlas

odoo-debuglisted

Diagnosing a failing Odoo instance — reading tracebacks and server logs, decoding errors (KeyError / "Field does not exist", MissingError, AccessError, ValidationError / UserError, CacheMiss, registry/loading failures, "Invalid view definition" XML errors), turning on dev mode (--dev=all/xml/qweb/reload), dropping into pdb / odoo-bin shell, scoping log output (--log-handler), logging SQL, tracing what actually runs at runtime, capturing runtime VALUES (args/locals/self at a breakpoint + exception post-mortem stack via state_capture), and interactive step-through with debugpy/DAP. Use whenever an Odoo stack trace, failed -i/-u, blank or 500 page, "works locally not in prod", a wrong-at-runtime value, or "why did it raise" shows up, or before you guess which addon or layer caused it. Read the running instance instead of guessing. Targets Odoo 17/18/19.
tuanle96/odoo-ai-skills · ★ 4 · Code & Development · score 62
Install: claude install-skill tuanle96/odoo-ai-skills
# Odoo debugging Most Odoo errors are about the **composed runtime**, not a typo: a field/method/view that exists only after the addon graph loads, an override that ran (or didn't) at the wrong MRO layer, a record rule, or a stale cache. The top traceback frame is often not the cause. **Decode the error class first, then read ground truth** before editing — delegate discovery to the **`odoo-introspect`** skill (`odoo-ai all <model>`). **Version floor: Odoo 17/18, through Odoo 19 (current LTS).** `--dev` sub-flags and `--log-handler` names target 17/18+; `breakpoint()` needs Python 3.7+. Older → `skills/odoo-introspect/references/version-matrix.md`. ## Symptom → first tool | Symptom | First tool | |---------|-----------| | `KeyError: 'x'` / "Field x does not exist" | `model_brief` field inventory — is it real, which addon, did the dep load? | | `AccessError` / "not allowed to" | `odoo-security` → dump ACL + record rules (admin-works ⇒ record rule) | | `MissingError` / record does not exist | delete/rollback ordering, or company record rule hiding it; `trace_flow` | | Wrong / stale computed value | `model_brief` `depends` — incomplete `@api.depends` (see `odoo-perf`) | | "My override never runs" | `model_brief` MRO + `trace_flow` — real call order, not assumed | | Big flow does the wrong thing | `trace_flow` — actual cross-addon call sequence | | **A value is wrong at runtime — what *was* it?** | `state_capture` — break at the `model.method` and dump args/locals/`self` | |