Armv8-A processors provide the ability to set breakpoints on code or instructions of interest. Setting breakpoints is a common and useful debugging tool to help determine the cause of unexpected or incorrect behavior during execution.
Most debuggers capable of debugging Arm architecture processors will provide two types of breakpoint: software and hardware breakpoints. The following table compares the different breakpoint types:
|Software breakpoints||Hardware breakpoints|
|Implemented by||Replacing an existing instruction with a BKPT assembly instruction||Setting up some comparators in the debug logic of the core or processor|
|Operation when hit||Put the core into debug state||Put the core into debug state|
|Action on resuming execution||The BKPT instruction will be replaced with the original instruction.||The breakpoint will remain until the breakpoint is disabled or removed.|
|Number of breakpoints available||A large number (may be limited by the debugger)||Limited by Armv8-A implementation (see core reference manual)|