是的,这个问题以前已经报道过,但恐怕不能得到纠正。
你所看到的行为的原因是硬件依赖的。记住:当到达断点时,只有程序执行停止,硬件仍在运行,可能会产生中断,此时中断服务。
当执行重新开始时(当然),中断处理,当处理完成后返回到断点集。所以看起来好像什么也没有发生过。在等待恢复执行时,产生下一个中断…等等。
因此,当单步执行的最佳方法是禁用中断时,您会找到额外的菜单按钮来进行此作业,因此您不需要在代码中乱七八糟。
快乐迈步
鲍勃
以上来自于百度翻译
以下为原文
Yes, that issue has ben reported before, but I'm afraid it cannot get corrected.
The cause of the behaveour you have seen is hardware-dependent. Remember: When reaching a breakpoint, only the program-execution stops, the hardware is still running and may produce interrupts which are not serviced at this time.
When execution is resumed at first (of course) the interrupt becomes handled, when done the handler returns - to your breakpoint set. So it looks as if nothing has happened between. While waiting for resuming execution the next interrupt is produced... and so on.
So when single-stepping the best would be to disable the interrupts, you find a menu-button extra for this job, so you do not need to mess around in code.
Happy stepping
Bob
是的,这个问题以前已经报道过,但恐怕不能得到纠正。
你所看到的行为的原因是硬件依赖的。记住:当到达断点时,只有程序执行停止,硬件仍在运行,可能会产生中断,此时中断服务。
当执行重新开始时(当然),中断处理,当处理完成后返回到断点集。所以看起来好像什么也没有发生过。在等待恢复执行时,产生下一个中断…等等。
因此,当单步执行的最佳方法是禁用中断时,您会找到额外的菜单按钮来进行此作业,因此您不需要在代码中乱七八糟。
快乐迈步
鲍勃
以上来自于百度翻译
以下为原文
Yes, that issue has ben reported before, but I'm afraid it cannot get corrected.
The cause of the behaveour you have seen is hardware-dependent. Remember: When reaching a breakpoint, only the program-execution stops, the hardware is still running and may produce interrupts which are not serviced at this time.
When execution is resumed at first (of course) the interrupt becomes handled, when done the handler returns - to your breakpoint set. So it looks as if nothing has happened between. While waiting for resuming execution the next interrupt is produced... and so on.
So when single-stepping the best would be to disable the interrupts, you find a menu-button extra for this job, so you do not need to mess around in code.
Happy stepping
Bob
举报