I get this request all the time from students of the Advanced .NET Debugging course my team delivers. Below are the common commands used when debugging specific .NET issues. It is by no means the only commands you will run.
Hangs or Poor Performance~* kb - Confirm that managed threads are executing. Compare the results of multiple memory dumps.~* e!clrstack - Compare the results of multiple memory dumps!threadpool - Verify there are free threads to do work.
Memory Leak!eeheap -gc - If you have no performance counters, this is a way to ascertainthe size of the heaps!eeheap -loader - View the size of the loader heap!dumpheap -mt <MethodTable> or !dumpheap -type <Type> - Display statistics for a specific type, still in memory!gcroot <Address> - Take the address for a leaked object and find out who has roots to the object
Exceptions~* e!dumpstack -ee - Dump the managed and unmanaged callstack for all threads that have run managed code!dae - Dump all managed exceptions!threads - Show statistics for managed threads, including the last exception !do - Dump an object and all its fields