DNCDbg is an acronym for .NET Core (dot net core) Debugger. It implements the Debug Adapter Protocol, allowing you to debug .NET applications running on all versions of the .NET runtime.
Initially, DNCDbg was based on version 3.1.3 of the NetCoreDbg source code, but unlike NetCoreDbg, its development is fully hosted on GitHub, making it more collaborative and flexible.
Project goals: implement functionality close to that of the MSVS C# debugger (excluding features related to the MSVS IDE and those not supported by DAP), provide complete Debug Adapter Protocol support, and achieve low memory consumption and high performance.
See the current Debug Adapter Protocol support status.
| DNCDbg | NetCoreDbg | VsDbg | |
|---|---|---|---|
| License | MIT | MIT | Commercial1 |
| Implementation | C++ | C++ and C#2 | C# |
| Physical memory footprint3 | 11.7M | 52.4M | 146.8M |
| Display method parameters in stack trace | ✅ | ❌ | ✅ |
| Display in/ref/out parameter modifiers | ✅ | ❌ | ✅ |
| Display active CLR internal frames in stack trace | ✅ | ❌ | ✅ |
| Display human readable async stack trace | ✅ | ❌ | ✅ |
| Display local constants (literals) | ✅ | ❌ | ✅ |
Use ToString() for object variable display |
✅ | ❌ | ✅ |
| Inputting text into the target process | ✅ | ❌ | ✅ |
| Source File Map | ✅ | ❌ | ✅ |
| Module unload | ✅ | ❌ | ✅ |
| Embedded PDB | ✅ | ❌ | ✅ |
| Evaluation format specifiers | ✅ | ❌ | ✅ |
| DebuggerBrowsable attribute | ✅ | ✅4 | ✅ |
| DebuggerDisplay attribute | ✅ | ❌ | ✅ |
| DebuggerTypeProxy attribute | ✅ | ❌ | ✅ |
| Using-directive awareness in type resolution | ✅ | ❌ | ✅ |
| Pagination for variable children | ✅ | ❌ | ✅ |
| MI/GDB and CLI protocols | ❌ | ✅ | ❌ |
| Interop (Mixed) debug | ❌ | ✅5 | ❓ |
| Hot Reload | ❌ | ✅6 | ❓ |
| Cross Platform | ✅ | ✅7 | ✅ |
1 From the VsDbg console output: "You may only use the Microsoft .NET Core Debugger (vsdbg) with Visual Studio Code, Visual Studio or Visual Studio for Mac software to help you develop and test your applications."
2 Used only for the symbol reader, the C# expression parser, and primitive type evaluation.
3 Measured on macOS 26.6.2 using the vmmap utility on a simple application stopped at a breakpoint, with approximately 20 local variables and 10 evaluation requests. The debug session was started inside the VSCode IDE using the DAP protocol; NetCoreDbg was built without the interop and Hot Reload features.
4 Only the Never state for properties is supported.
5 Linux and Tizen operating systems only.
6 Available via the MI/GDB protocol only, and currently limited to the MSVS Tizen plugin.
7 Does not support musl-based Linux distros.
The project uses Trunk-Based Development, which means you can build the current upstream code and be sure you have the latest version with all features and fixes included. Upcoming changes can be found in CHANGELOG.md.
Contributions are welcome! Please read our Contributing Guidelines to learn how you can report bugs, propose features, or contribute code changes through forks.