断点可以用在中断服务程序(ISR)中吗?
答案 0 :(得分:8)
是 - 模拟器中的 。
否则,不。在任何情况下都难以实现,也是一个糟糕的主意。 ISR(通常)应该与硬件一起工作,当你在每条指令之间留出半秒的间隙时,硬件可以很容易地表现得非常不同。
改为设置某种日志记录系统。
ISR还非常不便地从其他进程“窃取”CPU,因此许多操作系统建议保持您的ISR极短并且只执行严格必要的操作(例如处理任何紧急< / strong>硬件,以及安排正确处理事件的任务)。因此从理论上讲,ISR应该非常简单,不需要调试。如果它的硬件行为是问题,请使用某种日志记录,正如我所建议的那样。如果硬件确实不介意指令之间的长时间间隔,那么您可以在用户空间中编写大部分驱动程序 - 而可以使用调试器!
答案 1 :(得分:3)
根据您的平台,您可以通过访问处理器的调试端口(通常使用JTAG接口)来执行此操作。请记住,您正在彻底改变与该方法的计时有关的所有内容,因此您的调试会话可能毫无用处。但话说回来,很多错误都可以通过这种方式捕获。还要注意基于MMU的内存映射,因为JTAG调试器通常不会考虑它们。
答案 2 :(得分:1)
在Windows中,附加kernel debugger,您确实可以在中断处理程序中放置断点。