【发布时间】:2017-05-05 10:47:37
【问题描述】:
我在我的系统中使用 Watch dog。如果它在 5 秒内没有重新加载,它将被触发。我想查看在看门狗重置之前完成的代码列表。在没有连接调试器的情况下可以)在我的代码中记录指令列表。
【问题讨论】:
-
您使用的是什么操作系统?你为什么不试试
ptrace?此外,您仍然需要调试符号来识别堆栈帧上的函数。如果您不希望调试器始终连接,您可以在 看门狗触发后附加它。 -
欢迎来到 Stack Overflow!请edit您的问题显示the code you have so far。您应该至少包含您遇到问题的代码的大纲(但最好是minimal reproducible example),然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask。
-
您仍然可以添加显示,例如
print("Flag");,以了解您的代码在停止之前的位置。 -
@Likhitha:这部分具有看门狗的早期唤醒中断功能。您可以使用它在重置之前将堆栈跟踪以及其他感兴趣的核心状态保存在非易失性存储器中。这通常最容易执行,抓取堆栈指针并将接下来的 N 个字节复制到 RAM 中标记为不会在复位后初始化的区域。然后通过重置后可用的任何渠道打印它。解释是一个棘手的部分,并且受益于熟悉机器代码,将合理的返回地址与映射文件进行比较是一个好的开始。