dotnet-debugger-dap 0.2.0

dotnet tool install --global dotnet-debugger-dap --version 0.2.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local dotnet-debugger-dap --version 0.2.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=dotnet-debugger-dap&version=0.2.0
                    
nuke :add-package dotnet-debugger-dap --version 0.2.0
                    

dotnet-debugger

A debugger for .NET (CoreCLR) that speaks the Debug Adapter Protocol. MIT licensed, written in C# on top of ICorDebug.

Debugs .NET 8, 9 and 10 applications on Windows, Linux and macOS, and .NET Framework 4.x applications on Windows (including old non-SDK projects and their Windows PDBs). 64-bit processes only.

dotnet tool install -g dotnet-debugger-dap
dotnet-debugger --version

Runs on .NET 8 or newer (it rolls forward to whatever runtime is installed). The release archives and the VS Code extension are self-contained and need no .NET at all.

The command talks DAP over stdin/stdout (or TCP with --server[=PORT]), which is what editors expect from a debug adapter.

Neovim (nvim-dap)

local dap = require('dap')
dap.adapters.coreclr = { type = 'executable', command = 'dotnet-debugger' }
dap.configurations.cs = {
  {
    type = 'coreclr', request = 'launch', name = 'Launch project',
    project = '${workspaceFolder}', build = true,
  },
}

Any other DAP client

Launch arguments (all optional except one of program / project):

Field Meaning
program Path of the .dll or executable to debug
project Project file or directory; the output assembly is found through MSBuild, Properties/launchSettings.json is applied
build Run dotnet build first
args, cwd, env Arguments, working directory, environment (null removes a variable)
console internalConsole (default), integratedTerminal, externalTerminal
stopAtEntry, justMyCode, enableStepFiltering, allowImplicitFuncEval As in other .NET debuggers
symbolOptions, sourceFileMap Symbol servers and path mapping for code built elsewhere

attach takes processId.

VS Code

Use the dotnet-debugger extension, which bundles this adapter and adds one-click launch commands.

Status

Verified on Windows x64 and Linux x64 with .NET 8, 9 and 10 (in containers the debugger needs --cap-add=SYS_PTRACE --security-opt seccomp=unconfined). macOS, arm64 and Alpine are built but not verified yet. Documentation, roadmap and issues: https://github.com/dvislobokov/dotnet-debugger

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.2.0 101 10/5/2026
0.1.0 121 9/20/2026

0.2.0
- .NET Framework 4.x on Windows: launch and attach, legacy (non-SDK) projects built with MSBuild.exe, integratedTerminal/externalTerminal, several AppDomains, Windows (full/pdbonly) PDBs, NGen disabled with justMyCode=false.
- 32-bit processes are refused with a plain message (64-bit only).
- Linux/macOS, .NET 8: the adapter no longer hangs after "The debuggee cannot be stopped" while expanding an object.
- Fixes from a black-box DAP probe of 0.1.0: unhandled exceptions always stop, non-ASCII output on Windows, async stepping, long strings, attach errors, paged and capped variables, implicit evaluation timeouts (option allowImplicitFuncEval), robust DAP parsing, expression evaluator additions.
- JetBrains DAP client compatibility: variables filter "named", namedVariables, sorted threads, single terminate, exited -1 for a terminated debuggee.
Full list: https://github.com/dvislobokov/dotnet-debugger/blob/master/CHANGELOG.md