Skip to content

[browser][mono] remove debug proxy - #130817

Closed
pavelsavara wants to merge 1 commit into
dotnet:mainfrom
pavelsavara:remove-browser-debug-proxy
Closed

[browser][mono] remove debug proxy#130817
pavelsavara wants to merge 1 commit into
dotnet:mainfrom
pavelsavara:remove-browser-debug-proxy

Conversation

@pavelsavara

Copy link
Copy Markdown
Member

Remove the Mono Browser/WASM debug proxy

Summary

This change removes the Mono Browser/WASM debug proxy (BrowserDebugProxy / BrowserDebugHost) and all of its usages across the runtime, build, packaging, CI, and documentation.

Behavioral impact

Important

Debugging managed code directly in the browser dev tools will stop working.
The proxy that translated between the browser dev tools and the runtime's debugger agent is gone, so attaching a debugger to managed code through the browser dev tools is no longer supported. Native (C/C++) debugging and runtime diagnostics are unaffected.

What was removed

The proxy itself

  • Deleted src/mono/browser/debugger/ in its entirety (BrowserDebugProxy and BrowserDebugHost, including the solution, docs, and build props).

Transport NuGet package

  • Deleted src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/.
  • Removed its project references from src/mono/nuget/mono-packages.proj and src/coreclr/.nuget/coreclr-packages.proj.
  • Removed its signing entry from eng/Signing.props.

WASM app host plumbing (src/mono/wasm/host)

  • Removed the proxy launch and the debug-proxy routes/launchers from BrowserHost.cs, WebServerStartup.cs, and the DevServer (DebugProxyLauncher.cs, WebAssemblyNetDebugProxyAppBuilderExtensions.cs, DevServerStartup.cs).
  • Removed ToProxyOptions() and the now-unused proxy-port configuration properties (*ProxyPort / *DebuggingPort) from CommonConfiguration.cs, RunConfiguration.cs, and RuntimeConfigJson.cs.
  • Dropped the BrowserDebugHost project reference and packed files from WasmAppHost.csproj.
  • The general web server and dev server remain intact; only the debug-proxy pieces were removed.

Build & packaging

  • Removed the MicrosoftSymbolStoreVersion (proxy-only) from eng/Versions.props. MicrosoftExtensionsLoggingVersion is retained (still used elsewhere).
  • Removed the build-dbg-proxy targets from src/mono/browser/Makefile and src/mono/wasi/Makefile.

CI

  • Deleted the eng/pipelines/runtime-wasm-dbgtests.yml pipeline.
  • Removed the debuggerTestsOnly parameter and conditions from eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml.
  • Removed the runtime-wasm-dbgtests definition from eng/pipelines/common/variables.yml.
  • Removed the deleted paths (debugger directory, transport package) from eng/pipelines/common/evaluate-default-paths.yml.

Documentation & ownership

  • Removed the debugger-tests section, CI table rows, and the runtime-wasm-dbgtests reference from src/mono/browser/README.md.
  • Removed the managed proxy-based debugging sections from docs/workflow/debugging/mono/wasm-debugging.md, keeping native and runtime debugging content.
  • Fixed dead links in src/mono/wasm/features.md, src/mono/wasm/host/README.md, docs/workflow/wasm-documentation.md, and src/mono/wasi/README.md.
  • Removed the browser/debugger and BrowserDebugHost NuGet entries from .github/CODEOWNERS.

Not changed

The runtime-side debugger agent is intentionally kept (src/mono/browser/runtime/debug.ts, src/mono/mono/component/mini-wasm-debugger.c, and the corresponding keep_fnames entries in rollup.config.js).

Note

This description was generated with the assistance of GitHub Copilot.

@pavelsavara pavelsavara added this to the 11.0.0 milestone Jul 15, 2026
@pavelsavara pavelsavara self-assigned this Jul 15, 2026
@pavelsavara pavelsavara added the arch-wasm WebAssembly architecture label Jul 15, 2026
Copilot AI review requested due to automatic review settings July 15, 2026 20:09
@pavelsavara pavelsavara added area-Debugger-mono os-browser Browser variant of arch-wasm labels Jul 15, 2026
@pavelsavara
pavelsavara temporarily deployed to copilot-pat-pool July 15, 2026 20:09 — with GitHub Actions Inactive
@pavelsavara
pavelsavara temporarily deployed to copilot-pat-pool July 15, 2026 20:09 — with GitHub Actions Inactive
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 6 pipeline(s).
9 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @thaystg, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the Mono Browser/WASM managed-debugging proxy (BrowserDebugProxy/BrowserDebugHost) and cleans up the associated host wiring, packaging/build hooks, CI pipelines, and documentation so the proxy is no longer built or referenced anywhere in dotnet/runtime.

Changes:

  • Removed the debug proxy implementation and its dev-server/web-server integration endpoints.
  • Removed the internal transport/package plumbing and signing entries used to distribute the proxy bits.
  • Removed CI definitions/conditions and updated docs/ownership references that pointed to the proxy.

Reviewed changes

Copilot reviewed 73 out of 74 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/mono/wasm/host/WebServerStartup.cs Removes the legacy /debug proxy route and related process-launch code.
src/mono/wasm/host/WasmAppHost.csproj Drops BrowserDebugHost project reference and packaged tool payload.
src/mono/wasm/host/RuntimeConfigJson.cs Removes proxy/debugger port properties from host runtimeconfig model.
src/mono/wasm/host/RunConfiguration.cs Removes proxy-options conversion and related dependency.
src/mono/wasm/host/README.md Updates CLI/runtimeconfig docs to remove proxy-related settings and links.
src/mono/wasm/host/DevServer/WebAssemblyNetDebugProxyAppBuilderExtensions.cs Deletes the dev-server debugging middleware implementation.
src/mono/wasm/host/DevServer/DevServerStartup.cs Stops adding the dev-server debugging middleware (but still advertises debug path).
src/mono/wasm/host/DevServer/DebugProxyLauncher.cs Deletes the debug-proxy child-process launcher.
src/mono/wasm/host/CommonConfiguration.cs Removes proxy-options conversion and updates --debug help text.
src/mono/wasm/host/BrowserHost.cs Removes debug-proxy hosting/launch and related dependency.
src/mono/wasm/features.md Removes docs link to deleted debugger.md.
src/mono/wasi/README.md Updates link target for debugging docs.
src/mono/wasi/Makefile Removes the build-dbg-proxy target.
src/mono/nuget/mono-packages.proj Drops the BrowserDebugHost transport package from Mono packaging graph.
src/mono/nuget/Microsoft.NETCore.BrowserDebugHost.Transport/Microsoft.NETCore.BrowserDebugHost.Transport.pkgproj Deletes the internal transport package project.
src/mono/browser/runtime/rollup.config.js Updates keep_fnames comment now that proxy stack-walk reference is removed.
src/mono/browser/README.md Removes debugger-test documentation and CI table references.
src/mono/browser/Makefile Removes the build-dbg-proxy target.
src/mono/browser/debugger/README.md Deletes proxy-area README.
src/mono/browser/debugger/Directory.Build.props Deletes debugger directory build props.
src/mono/browser/debugger/DetectRuntimeConfiguration.props Deletes debugger runtime configuration detection props.
src/mono/browser/debugger/debugger.slnx Deletes debugger solution file.
src/mono/browser/debugger/debugger.md Deletes proxy-based managed-debugging instructions.
src/mono/browser/debugger/BrowserDebugProxy/WebcilDebugMetadataProvider.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/WasmHost.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/ValueTypeClass.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/ValueOrError.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/SignatureTypeProvider.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/RunLoopStopReason.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/RunLoopExitState.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/ProxyOptions.cs Deletes proxy public options type.
src/mono/browser/debugger/BrowserDebugProxy/PortableExecutableDebugMetadataProvider.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/MetadataDebugSummary.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/MemberObjectsExplorer.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/JObjectValueCreator.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/InternalErrorException.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/IDebugMetadataProvider.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Firefox/FirefoxMonoProxy.cs Deletes proxy Firefox implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Firefox/FirefoxMessageId.cs Deletes proxy Firefox implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Firefox/FirefoxExecutionContext.cs Deletes proxy Firefox implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Firefox/FirefoxDebuggerProxy.cs Deletes proxy Firefox implementation file.
src/mono/browser/debugger/BrowserDebugProxy/EvaluateExpression.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/DevToolsProxy.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/DevToolsHelper.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/DebuggerProxyBase.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/DebuggerProxy.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/DebuggerAgentException.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Common/WasmDebuggerConnection.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Common/RunLoop.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Common/InternalUseFieldName.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Common/HelperExtensions.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Common/FirefoxDebuggerConnection.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Common/DevToolsQueue.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/Common/DevToolsDebuggerConnection.cs Deletes proxy implementation file.
src/mono/browser/debugger/BrowserDebugProxy/BrowserDebugProxy.slnx Deletes proxy solution file.
src/mono/browser/debugger/BrowserDebugProxy/BrowserDebugProxy.csproj Deletes proxy project file.
src/mono/browser/debugger/BrowserDebugHost/Startup.cs Deletes debug host startup.
src/mono/browser/debugger/BrowserDebugHost/Program.cs Deletes debug host program entrypoint.
src/mono/browser/debugger/BrowserDebugHost/DebugProxyHost.cs Deletes debug host orchestration.
src/mono/browser/debugger/BrowserDebugHost/BrowserDebugHost.csproj Deletes debug host project file.
src/coreclr/.nuget/coreclr-packages.proj Removes transport package reference from CoreCLR packaging graph.
eng/Versions.props Removes proxy-only version property entry.
eng/Signing.props Removes signing glob for the deleted transport package.
eng/pipelines/runtime-wasm-dbgtests.yml Deletes the dedicated wasm debugger-tests pipeline.
eng/pipelines/extra-platforms/runtime-extra-platforms-wasm.yml Removes debugger-tests-only parameter/conditioning.
eng/pipelines/common/variables.yml Removes runtime-wasm-dbgtests from wasm-only build detection.
eng/pipelines/common/evaluate-default-paths.yml Removes debugger/proxy paths from evaluated path lists.
docs/workflow/wasm-documentation.md Updates debugging doc link to new section target.
docs/workflow/debugging/mono/wasm-debugging.md Removes proxy/managed-debugging instructions; keeps native/runtime debugging guidance.
.github/CODEOWNERS Removes codeowner entries for deleted debugger/proxy paths.

Comment on lines 36 to 42
public static void Configure(IApplicationBuilder app, IOptions<DevServerOptions> optionsContainer, TaskCompletionSource<ServerURLs> realUrlsAvailableTcs, ILogger logger, IHostApplicationLifetime applicationLifetime, IConfiguration configuration)
{
app.UseDeveloperExceptionPage();
EnableConfiguredPathbase(app, configuration);

app.UseWebAssemblyDebugging();

DevServerOptions options = optionsContainer.Value;

@pavelsavara pavelsavara added the NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) label Jul 16, 2026
@pavelsavara pavelsavara modified the milestones: 11.0.0, 10.0.x, 12.0.0 Jul 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-wasm WebAssembly architecture area-Debugger-mono NO-MERGE The PR is not ready for merge yet (see discussion for detailed reasons) os-browser Browser variant of arch-wasm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants