2个奇怪的疑惑
Windows内核调试
2个奇怪的疑惑
阿龙
2010-11-11, 10:28 上午
最近学到了中断和异常处理,很多疑惑,下面2个问题尤其让我晕:
在讲到异常中的陷阱的时候,书上说:当控制转移到异常处理程序的时候,所保存的断点CS及EIP的值指向引起陷阱的指令的下一条要执行的指令。下一条要执行的指令,不一定就是下一条指令。因此,陷阱处理程序并不总是能根据保存的断点,反推出产生异常的指令。其中:
下一条要执行的指令,不一定就是下一条指令
,我不太明白,能举个例子吗?
在列举故障类异常:段不存在故障的时候,书上说:在进入故障处理程序时,保存的CS及EIP指向发生故障的指令;或者该故障作为任务切换的一部分发生时,指向任务的第一条指令。对于:
作为任务切换的一部分发生时,指向任务的第一条指令
,我也想不太明白,能举个例子吗?
谢谢!!
Re: 2个奇怪的疑惑
格蠹老雷
2010-11-19, 21:42 下午
比如基于调试寄存器触发的变量监视断点触发的是陷阱类异常,如果访问变量的是下面这样的函数调用指令:
call dword ptr [eax+4]
那么异常发生后,CS:EIP指向的就是目标函数的第一条指令而不是CALL语句下的指令。