- 使用
gdb ./XX
时,gdb进程fork出子进程,调用ptrace(PTRACE_TRACEME)系统调用跟踪,然后exec替换可执行文件 - ptrace非常强大,它允许跟踪进程读写被跟踪进程的代码空间、数据空间、堆栈、寄存器组的值,而且接管了操作系统发给被跟踪进程的信号
- 使用
gdb attach pid
的时候,gdb进程收养了被跟踪进程,调用了ptrace(PTRACE_ATTACH) - 【GDB原理入门】如何实现断点指令:将断点处代码储存到断点链表,插入中断代码;当发生中断时,操作系统发信号被gdb截获,查询断点链表
- 将断点代码写回
- 重新设置PC指向断点