Embedded system
An in-circuit debugger (ICD), a hardware device that connects to the microprocessor via a JTAG interface. This starts and stops the microprocessor from outside as it runs  the software.  It also allows memory and registers to be read, and to store the software program in memory.