02.4 Logging and debug flags
Pipeline progress, verbosity, and interpreting CLI output without drowning.
Logging and debug flags
Compiler output should tell you which phase failed, not dump an entire IR forest because you typoed one identifier.
Pipeline progress model
Section titled “Pipeline progress model”Beskid compiler work is structured into phases reported through the shared pipeline model (beskid_pipeline phase IDs in the Rust workspace). CLI and analysis surfaces should align with those phases rather than ad-hoc println! spam in random crates.
When debugging “why is this slow,” look for:
- Which phase repeats (resolution vs semantic vs codegen)
- Whether you are analyzing the whole workspace vs one target
Exact flags evolve with the CLI—cross-check CLI command reference and per-command pages (analyze, build, run).
Practical habits
Section titled “Practical habits”- Reproduce with CLI first — smaller surface than editor caches.
- Shrink the project — one target, one file, one diagnostic.
- Record versions —
beskid --version, extension version, git commit if local build. - Compare locked vs floating resolution —
--frozen/--lockedwhen dependency drift is suspect.
flowchart TD bug[Weird behavior] --> cli[Reproduce with CLI] cli --> small[Minimize file/target] small --> phase[Identify failing phase] phase --> spec[Check normative spec + diagnostic code]
LSP observability
Section titled “LSP observability”For editor-only issues, see LSP testing and observability in the reference tree.