So, let's say you're working on a project and things haven't gone as planned. Instead of being rewarded with blinky lights, you're left staring at a very non-blinky piece of hardware. At this stage, it's usually best to get the debugger up and running, rather than making random guesses about what might be wrong and sporadically changing sections of code.