embedded - 如何调试看门狗超时

标签 embedded debugging watchdog

我的微 Controller 中有一个看门狗,如果它没有被踢,就会重置处理器。我的应用程序运行良好一段时间,但最终会重置,因为看门狗没有被踢。如果我单步执行该程序,它就可以正常工作。

有哪些调试方法?

编辑: 结论: 我发现 bug 的方法是看门狗面包屑。

我使用的 PIC 具有高 ISR 向量和低 ISR 向量。 High 向量用于处理 LED 矩阵,Low 向量用于处理计时器滴答声。但我将两个 ISR 处理程序都放在高向量中。因此,当我禁用 LED 矩阵 ISR 且计时器滴答 ISR 需要服务时,处理器将陷入低 ISR 状态以处理计时器滴答,但计时器滴答处理程序不存在。

面包屑将我的搜索限制为处理 LED 矩阵的函数,特别是禁用 LED 矩阵中断。

最佳答案

添加一个未初始化的全局变量,该变量在整个代码中设置为不同的值。具体来说,在主要函数调用之前和之后设置。

在 main 的开头放置一个断点。

当处理器重置时,全局变量仍将具有最后设置的值。继续添加这些“面包屑”以缩小问题函数的范围。

关于embedded - 如何调试看门狗超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/661864/

相关文章:

c - 原子地覆盖指针

c - 移位是否取决于字节序?

c - 使用 C 为 atmega328p 微 Controller 设计 react 定时器

python watchdog 监视创建的文件的目录并对该文件执行某些操作

c - 在不同函数的回调中使用函数

javascript - 如何调试 $(document).ready() 中包含的 javascript?

debugging - 如何调试/监控 SMTP 通信?

java - 在VS 2015中调试java

c - 实现看门狗定时器