dnSpy is a portable debugger and .NET assembly editor for use when editing and debugging assemblies even if the source code isn't available.
dnSpy is intended to assist in decompiling various assemblies allowing you to understand their functionality better. It is geared towards software developers that may need to reverse engineer .NET assemblies and handle obfuscated code by putting the required tools in one convenient location.
Debug .NET Framework, .NET Core and Unity game assemblies, no source code required
Set breakpoints and step into any assembly
Locals, watch, autos windows
Variables windows support saving variables (eg. decrypted byte arrays) to disk or view them in the hex editor (memory window)
Multiple processes can be debugged at the same time
Break on module load
Tracepoints and conditional breakpoints
Export/import breakpoints and tracepoints
Call stack, threads, modules, processes windows
Break on thrown exceptions (1st chance)
Variables windows support evaluating C# / Visual Basic expressions
Dynamic modules can be debugged (but not dynamic methods due to CLR limitations)
Output window logs various debugging events, and it shows timestamps by default
Assemblies that decrypt themselves at runtime can be debugged, dnSpy will use the in-memory image. You can also force dnSpy to always use in-memory images instead of disk files.
Public API, you can write an extension or use the C# Interactive window to control the debugger