Add a Monaco debugger toolbar to the C# playground, using the same class of .NET WebAssembly debugging stack Blazor WebAssembly relies on: IL execution in WASM with debugger hooks, Roslyn-compiled assemblies with symbols (PDB), mapper IL ↔ C# lines, UI-driven breakpoint / step-over / step-into / step-out / continue plus locals inspection.
Architectural outline (intent)
Roslyn: compile user C# → IL + PDB (or equivalent symbol payload for WASM debugger consumption).
Mono/.NET WASM runtime: execute IL inside the browser worker/runtime we already shell for grading/sandbox.
Variable inspection: locals / scoped names per paused frame.
Current line decoration in Monaco synchronized with paused IP.
Risks / notes
Bundle / load cost of PDB + WASM debugger components — document tradeoffs vs teaching-grade UX gains.
Align with app-language-runner / grading pipeline so debug mode does not weaken isolation or confuse “certified submit” semantics—clear mode separation (Debug vs Run/Grade).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Add a Monaco debugger toolbar to the C# playground, using the same class of .NET WebAssembly debugging stack Blazor WebAssembly relies on: IL execution in WASM with debugger hooks, Roslyn-compiled assemblies with symbols (PDB), mapper IL ↔ C# lines, UI-driven breakpoint / step-over / step-into / step-out / continue plus locals inspection.
Architectural outline (intent)
Toolbar — feature parity targets
Risks / notes
app-language-runner/ grading pipeline so debug mode does not weaken isolation or confuse “certified submit” semantics—clear mode separation (Debug vs Run/Grade).Acceptance criteria
Related
#24Monaco migration onapp-language-runner; this ticket layers debugger on top for C# specifically.