您当前位置: 首页 » 2015-07-12
按日期归档: 2015-07-12

x86-p6构架支持的“断点”方式

了解了一下调试相关的内容,x86下的p6平台,大约支持的几种基本断点方式:

1,断点指令

2,向特定地址写数据

3,向特定地址读数据

4,操作特定IO地址(读写)

对于断点指令:int 3(0xcc),当cpu执行到该指令时,会检查中断向量表,转为去执行中断服务“函数”

对于想特定指令写数据,同样也会检查中断向量表(实际上很可能不是中断向量表,因为引发的是一个寄存器检查,检查异常处理函数的地址),执行对应的代码块。

对于3,4与2的方式一样。

在VS里面,对于监控某个变量是否被修改成某个固定的值,很有可能是采用了上述的2或3这两个机制。当然,我这边的vs的反汇编代码其实只是指令上的判断而已,当修改成了我指定的条件时,最终会引发DebugBreak这个函数(这个函数最终还是执行int 3(0xcc))

在VS里面还有没有发现那一种中断方式是对应着4的。

2015-07-12 | | win, 编码技巧

x86-p6构架支持的“断点”方式已关闭评论