软件断点和现代OOOE处理器

时间:2015-01-26 17:51:31

标签: debugging operating-system computer-architecture

据我所知,现代操作系统为调试提供了api。当调试器进程要求内核在另一个进程的机器代码指令上设置断点时,内核用一个导致中断的操作码替换指令的第一个字节。

中断处理程序将暂停进程,保存寄存器并通知调试进程。

我不明白的是乱序执行处理器究竟发生了什么。中断指令可以在它的前任之前或之后执行,因此,在中断时,寄存器和存储器将包含错误的值。

1 个答案:

答案 0 :(得分:1)

这就是为什么所有有序事件(如中断,故障,异常等)总是在无序处理器中的提交点​​处理,原始程序顺序在该处理器中恢复,并且可以捕获正确的机器状态。这意味着您可能知道待处理事件但仍然延迟处理它。

请注意,外部世界可见的操作(例如存储到内存)也会在此阶段之后处理,因此您永远无法查看无序核心的推测内部状态(除了侧通道攻击方法之外)。 ..),任何中断或断点也将正确排序