A debugger is a software test used to detect bugs, i.e. programming errors. In debugging, which is intended to detect malfunctions in the production system and during maintenance, debuggers are used to examine the contents of variables. Debugging can also be performed step-by-step to detect errors in the program flow.
Unlike debugging, software testing is used during software development. So that a program can be debugged, it must contain debug information. This is special additional information by which the debugger can determine the structure of the program.
Debugging can take place, for example, directly on the chip as on-chip debugging. For this purpose microcontrollers( MCU) have an interface to a logic with debugging function. This on-chip logic provides direct access to the CPU registers and memory areas. By means of a debugger, a software test can be performed via this logic. The most frequently used interfaces are JTAG interfaces of the Joint Test Action Group (JTAG).