偶发性问题定位,有更详细一点的

🔍 溯源 ✍️ Jack | 📅 2024-09-10 | 👍 1 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/C语言 #技术/调试可靠性 #质量/精华

原帖 | Jack | 2024-09-10 22:43 | 👍1 | 阅读约1

偶发性问题定位,有更详细一点的解释说明吗?

1.Cmbacktrace如果在设备运行到偶现问题,进入Hardfault或其他异常时,可以将寄存器和调用栈的信息打印在内部Flash的某个区域上(cm_backtrace 与 Ozone 在线调试的适用场景对比见 cm_backtrace也是可以捕获hardfault)。

2.稍微高级一点:因为偶现性问题往往都和野指针竞态有关,先来说说偶现性的野指针,那么野指针往往出现在某些线程访问非这个线程能够访问的内存空间,解决办法对我们来说可以使用MPU,在钩子函数中,每次钩子函数设置MPU允许访问的空间为这个线程自己所应该能访问的变量,如果超出了这些变量的访问范围,MPU会直接拦截,并且进入Hardfault,实现野指针的捕获。

3.做Trace捕获器,一直监听CPU的寄存器变化,实现挂测,这种最靠谱,但是成本也高一些,需要导出Trace接口。


相关笔记