For debugging, there are fewer tools to use. Dnspy is a complete solution when it comes to static and dynamic analysis. It allows you to set breakpoints, and step into and step over for debugging. It also shows the variables' values.
To start debugging, you need to set a breakpoint on the entry point of the sample. Another option is to export the source code to C#, and then recompile and debug the program in Visual Studio, which will give you full control over the execution. Visual Studio also shows the variables' values and has lots of features to facilitate debugging.
If the sample is too obfuscated to debug or export to C# code by dotPeek or Dnspy, you can rely on ildasm.exe to export the sample code in IL language and use ilasm.exe to compile it again with debug information. Here is how to recompile it with ilasm.exe:
ilasm.exe /debug output.il /output=<new sample exe file>
With /debug, a .pdb file for the sample is created that includes the debug...