博客地址:http://home.cnblogs.com/u/zengjianrong/

GDB断点原理

1. 硬件(watchpoint,breakpoint)断点

以ARM32为例:

初始化阶段,通过hw_breakpoint.c注册断点异常handler

arch_hw_breakpoint_init
 -> hook_fault_code(hw_breakpoint_pending) 注册watchpoint的SIGTRAP hook;

设置断点时,通过ptrace_sethbpregs将断点信息写入到CPU debug register

 

2. 软件断点

2.1 breakpoint

替换程序断点位置的代码指令修改为陷入异常的指令,从而触发断点信号,再恢复回代码指令。

2.2 watch point

在每次访问内存都由软件做判断,性能严重下降。


 
posted @ 2021-12-06 14:37  black_man  阅读(729)  评论(0编辑  收藏  举报