This is an excellent explainer:
How Does a C Debugger Work? (GDB Ptrace/x86 example) - (gdb) break *0x972
https://blog.0x972.info/?d=2014/11/13/10/40/50-how-does-a-debugger-work
Very approachable. If you ever ran gdb
and heard about the concept of "instruction pointer", you probably know enough to understand this.