【问题标题】:Can breakpoints be used in ISRs?断点可以在 ISR 中使用吗?
【发布时间】:2008-11-28 12:49:35
【问题描述】:

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

【问题讨论】:

  • 你的平台是什么?答案是,理论上——是的;实际上 - 取决于平台(d'oh!)

标签: debugging breakpoints interrupt isr


【解决方案1】:

是 - 在模拟器中

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

改为设置某种日志记录系统。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在 Windows 中,附加了kernel debugger,您确实可以在中断处理程序中放置断点。

      【讨论】:

        猜你喜欢
        • 2012-10-22
        • 2018-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-19
        相关资源
        最近更新 更多