1. A method for debugging instructions, the method comprising: determining, by a debugger module, an end address of a group of instructions that are stored in a non-volatile memory module and are scheduled to be executed by a processor of a device; reading the group of instructions into the debugger module from the non-volatile memory module through a hardware debug interface; determining, by the debugger module, a number of conditional branch instructions included in the group of instructions; in response to the number of conditional branch instructions being non-zero, writing, by the debugger module, an address of a first conditional branch instruction of the group of instructions into a hardware compare register of the processor; in response to the number of conditional branch instructions being zero writing, by the debugger module, the end address into the hardware compare register; instructing the processor through the hardware debug interface to execute instructions of the group of instructions; comparing, in the processor, an address of an instruction to be executed with the address stored in the hardware compare register; in response to the address of the instruction being equal to the address stored in the hardware compare register, halting execution of the group of instructions; in response to halting execution of the group of instructions, instructing the processor to execute one instruction of the group of instructions and providing an indication from the processor to the debugger module indicating a change in instruction address.