内存读写断点的实现,是把相关内存页属性设置为PAGE_NOACCESS,这样当此页内内存被读写的时候会有异常传给调试器。
当异常传给调试器时候,debugee进程被挂起,调试器把内存页属性重新修改回去,同时设置一个单步调试断点。这样debugee进程才可以正常执行过去,否则会一直被挂起。因为被设置了单步调试断点,所以执行一个指令就再次挂起,交给调试器去处理。
这时候调试器把页面属性重新修改为PAGE_NOACCESS就可以了。
内存断点调试的原理
原文:http://www.cnblogs.com/jianxingzhe/p/4335769.html