By default GDB uses software breakpoint to stop/control code execution. Software breakpoint approach is very easy, basically gdb just insert a software interrupt instruction (SWI) before the point where you want to stop.
In other hand hardware breakpoint uses internal processor features to physically stop at program count (PC) position correspondent to line of code which you want.
In GDB prompt execute:
monitor gdb_breakpoint_override hard