Why your hardware needs an open source debugger
Working directly with hardware is hard. Each project brings with it mundane questions of which compiler to use, what communications protocols to work with, and how to load code. Developers also need to figure out how to debug the live system without affecting the program being executed.
In the past this has required expensive and proprietary software, but thanks to commodity hardware and projects such as OpenOCD, developing programs that run directly on embedded hardware is easier than ever before.
When working with very small systems, nice features that programmers have come to rely on may not be available. In such a system, when something goes wrong the system can end up in an unknown state where the only fix is to reset the hardware. Doing so gets the system working again but will throw out any information that could lead to the diagnosis of the problem. Hardware debuggers provide insight into what a CPU is doing even if it appears frozen.