What are the common debugging techniques for MCUs?

Debugging MCUs requires a combination of hardware and software approaches. Here are the most common techniques: