cpu过高问题定位过程
重要命令以及命令:
(1)查看cpu占用率过高的进程:top
我们可以看到是AppMain进程cpu占用较高。
(2)查看cpu占用率过高的线程:top -H -p pid
我们可以看到是进程里面的Timer_halPortL定时器线程cpu比较高,然后我们需要看是线程里面的那个函数cpu占用率比较高。
(3) 查看cpu占用率过高的具体函数。
gdb attach pid跟踪代码流程
(4) 分析代码
查看堆栈我们可以看出是轮询hal库电口模块的自适应接口的link状态时过高,我们看此任务的实时轮询时间是1s,而看代码发现访问iic有大量反错容错机制,一直在校正数据,所以一直在循环占用cpu资源,所以更改此处的逻辑后更新版本后再看cpu占用正常了,今天的问题定位问题就到这里了。