Le debugger est l'émulateur ne font qu'un, on doit permettre une exécution pas-à-pas (en visualisant le contenu des registres et de la mémoire) ainsi qu'un retour en arrière (reverse engineering).
Le debugger a ainsi le contrôle de l'exécution du programme (positionnement des breakpoint, pause dans l'exécution, ...).