4

断点可以在中断服务例程 (ISR) 中使用吗?

4

3 回答 3

8

是的 -在模拟器中。

否则,没有。这很难实现,无论如何都是个坏主意。ISR(通常)应该与硬件一起使用,当您在每条指令之间留出半秒的间隙时,硬件的行为很容易就大不相同。

而是设置某种日志记录系统。

ISR 还从其他进程中不优雅地“窃取” CPU,因此许多操作系统建议将 ISR 保持在极短的时间内,并且只执行严格必要的操作(例如处理任何紧急的硬件问题,并安排一个能够正确处理事件的任务)。所以理论上,ISR 应该非常简单,不需要调试。

如果问题出在硬件行为上,请按照我的建议使用某种日志记录。如果硬件真的不介意指令之间的时间间隔很长,那么您可以在用户空间中编写大部分驱动程序 - 您可以使用调试器!

于 2008-12-29T09:12:19.903 回答
3

根据您的平台,您可以通过访问处理器的调试端口来执行此操作,通常使用 JTAG 接口。请记住,您正在彻底改变与该方法的计时有关的所有内容,因此您的调试会话可能毫无用处。但是话又说回来,许多错误都可以通过这种方式捕获。还要注意基于 MMU 的内存映射,因为 JTAG 调试器通常不会考虑它们。

于 2009-01-11T23:33:17.877 回答
1

在 Windows 中,通过附加内核调试器,您确实可以在中断处理程序中放置断点。

于 2009-01-11T23:53:52.830 回答