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.
| DNCDbg | NetCoreDbg | VsDbg | |
|---|---|---|---|
| License | MIT | MIT | Commercial1 |
| Implementation | C++ | C++ and C#2 | C# |
| Physical memory footprint3 | 11.7M | 52.4M | 146.8M |
| Cross-platform | ✅ | ||
| Human-readable async stack traces | ✅ | ❌ | ✅ |
Use ToString() for object variable display |
✅ | ❌ | ✅ |
DebuggerBrowsable attribute |
✅ | ✅ | |
DebuggerDisplay attribute |
✅ | ❌ | ✅ |
DebuggerTypeProxy attribute |
✅ | ❌ | ✅ |
| Evaluation format specifiers | ✅ | ❌ | ✅ |
| Logpoints | ✅ | ❌ | ✅ |
| Embedded PDB | ✅ | ❌ | ✅ |
| Embedded sources | ✅ | ❌ | ✅ |
| Source Link | ✅ | ❌ | ✅ |
| Source File Map | ✅ | ❌ | ✅ |
| Standard input redirection (STDIN) | ✅ | ❌ | ✅ |
| Jump to Cursor (Set Next Statement) | ✅ | ❌ | ✅ |
| Single-thread execution and stepping | ✅ | ❌ | ❓ |
| MI/GDB and CLI protocols | ❌ | ✅ | ❌ |
| Mixed-mode (interop) debugging | ❌ | ❓ | |
| Hot Reload | ❌ | ❓ | |
| View Full Comparison Table | |||
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.
- VS Code IDE, Windows OS — set up local debugging in VS Code on Windows.
- VS Code IDE, Linux and macOS — set up local debugging in VS Code on Unix-like systems.
- DAP compatibility status — which Debug Adapter Protocol messages and fields DNCDbg supports.
- Launch options — command-line options of the debugger: protocol server mode, logging, version and build information.
- Configuration environment variables — configure the debugger before launch or per debug session.
- Multi-session persistent debug server — run several debug sessions one after another without restarting the debugger.
- Launch settings (launchSettings.json) — configure the launch with a
launchSettings.jsonprofile shared with Visual Studio anddotnet run.
- Debugger pseudo-variables — inspect special values such as the exception currently being thrown, or get process and thread IDs for breakpoint conditions.
- Evaluation format specifiers — control how evaluated expressions are displayed.
- Exception conditions — break only when a thrown exception meets the specified conditions.
- Hit count breakpoints — stop or log after a selected number of breakpoint hits.
- Inputting text into the target process — send standard input (STDIN) to the debugged application.
- Logpoints — send output to the Debug Console without editing code.