windbg break point
WinDbg
windbg break point
nigel
2009-12-18, 15:35 下午
当我们用windbg时,用bp bu等命令设置好断点,然后命中断点进入到调试器,那么此时我们设置的断点位置的指令是已经执行了的,还是将要执行的呢?
Re: windbg break point
pch
2009-12-18, 16:24 下午
将要执行啊……
Re: windbg break point
uglyangel
2009-12-21, 22:03 下午
和在代码下断点一样吧.
Re: windbg break point
格蠹老雷
2009-12-28, 12:49 下午
这个问题挺好的,说明楼主的思考已经精确到指令一级。
因为bp, bu都是基于断点指令(x86上即INT 3)工作的,设置断点时,断点位置是被换成断点指令的,所以断点命中时,准确说,那里的INT 3已经执行过了,但是那条本来的指令还没执行呢,因为本来的指令已经被替换掉了。
对于使用ba设置的数据监视断点,中断下来时,访问数据的指令已经执行过了,程序指针指向的是下一条指令。
要完全理解其中的原因,应该知道IA-32把异常分成了三类,根据异常的类型不同,CPU的EIP指针可能指向导致异常的,也可能指向下一条指令,如果有《软件调试》,那么可以看一下表3-1和表4-2。