Debug Optimized JavaScript as Authored TypeScript
Each example ships minified JavaScript with a hand-crafted scopes source map.
Pick an example, follow the steps with DevTools open, and use 🐛 File a bug for anything that looks off.
Interactive Debugging Examples
Variable Renaming, Constant Folding & Binding Expressions
Reconstruct mangled identifiers, folded module constants, complex multi-variable expressions, and eliminated dead variables.
Register Reuse & Sub-Range Variable Bindings
Track variable liveness and register coalescing when a single minified variable 'r' is overwritten across multiple stages.
Multi-Level Function Inlining & Virtual Call Stacks
Expand a single physical V8 stack frame into 4 authored call frames with per-frame scopes, call sites, and Debug Evaluate.
Closures & Hidden Compiler Frames
Unpack tuple-compressed closure state (_c[0..3]) across nested scopes while hiding internal compiler trampolines (isHidden: true).
Logical Stepping Across Inlined & Outlined Functions
Step Over, Into, and Out of inlined helper functions and outlined transpiled blocks while automatically skipping compiler helpers.
Thrown Errors & Symbolized Stack Traces
An error thrown from inlined code inside an outlined block, called through a runtime helper, from an inlined caller. DevTools rebuilds the authored stack trace.
One Function Inlined at Two Call Sites
toCents() is inlined twice into compareOffers(). One authored breakpoint must resolve to both copies, each with its own call site and values.
WebAssembly: Debugging C++ via Scopes & the Wasm Debug Proxy
A hand-assembled wasm module with a scopes source map: inlined C++ helpers, register reuse, structs in linear memory, i64 values and a wasm trap, all shown as authored C++.