单片机/MCU论坛
直播中

轩轩

5年用户 9经验值
擅长:嵌入式技术
私信 关注
[问答]

嵌入式设备在远端运行,会有偶发性代码跑飞的情况,无法到现场调试的情况下如何检查出问题?

(没什么积分希望大家一起讨论一下)
现状:目前设备在远端运行,会有偶发性代码跑飞的情况 ,无法到现场调试的情况下如何检查出问题?

解决:在设备端增加日志报告上传(通过4G模块)机制,希望可以通过日志数据找到跑飞的原因。
在日志数据中将会上传如下数据:
设备操作日志:
1、设备云端同步服务调用操作;
2、云端设备影子更新操作;
3、设备传感器值报警日志;
4、设备功能按键操作;
设备系统线程运行日志:
1、线程的优先级;
2、线程当前的状态;
3、线程当前的栈位置;
4、线程的栈大小;
5、线程历史中使用的最大栈位置;
6、线程剩余的运行节拍数;
设备内存使用日志:
1、堆栈使用情况(最大剩余内存、当前使用内存、最大使用内存);
2、内存申请、释放情况;
设备跑飞时日志记录(HardFault中断):
1、设备跑飞时栈数据;
2、设备系统线程运行日志;
3、设备内存使用日志;

问题:
1、请问当前“现状”下,新增日志上报功能是否可以找到跑飞的原因;
2、请问是否有更好的建议办法在当前“现状”下找到偶发性跑飞的原因;
3、请问日志报告中的数据,是否有其他补充建议,方便判断跑飞原因;
4、请问日志报告中的数据,是否有无必要数据可删除不上传;

奖励20积分

回帖(3)

张昂笙

2024-7-22 16:16:44
以帮助诊断问题?

答:在当前现状下,新增日志上报功能确实可以帮助诊断问题。通过收集设备操作日志、系统线程运行日志、内存使用日志以及设备跑飞时的日志记录,可以为远程调试提供更多信息,从而更有可能找到问题的原因。

2. 除了当前的日志数据,还有哪些其他信息可能有助于诊断问题?

答:除了当前的日志数据,以下信息也可能有助于诊断问题:

a. 系统错误和异常信息:记录系统错误和异常信息,如断言失败、异常捕获等,有助于了解程序运行中遇到的问题。

b. 性能指标:记录设备的性能指标,如CPU使用率、内存使用率等,有助于分析设备在高负载情况下的表现。

c. 网络通信日志:记录设备与云端之间的通信日志,包括请求和响应数据,有助于分析网络通信中可能出现的问题。

d. 硬件状态信息:记录设备硬件的状态信息,如电源电压、温度等,有助于分析硬件故障对程序运行的影响。

e. 外部环境因素:记录设备运行时的外部环境因素,如湿度、温度等,有助于分析环境因素对设备性能的影响。

3. 如何优化日志上报机制以提高问题诊断的效率?

答:以下是一些建议来优化日志上报机制:

a. 设定日志级别:根据问题的严重性,设置不同的日志级别,如DEBUG、INFO、WARNING、ERROR和FATAL。在问题诊断时,可以根据需要调整日志级别,以便更快地找到关键信息。

b. 压缩和过滤日志:对日志数据进行压缩和过滤,以减少上传的数据量,提高日志上报的效率。

c. 实时监控:实现实时监控功能,当发现异常情况时,立即上报相关日志,以便快速定位问题。

d. 日志轮转:设置日志轮转机制,定期清理旧的日志数据,避免日志数据占用过多存储空间。

e. 智能分析:利用机器学习等技术对日志数据进行智能分析,自动识别潜在的问题和异常模式。

f. 用户反馈:鼓励用户提供反馈,如设备使用过程中遇到的问题、异常现象等,以便更好地了解设备的实际运行情况。

通过以上措施,可以提高问题诊断的效率,帮助更快地找到并解决问题。
1 举报
  • 轩轩: 感谢分享,请问单片机中CPU使用率一般该如何获取?请问这些是AI生成的答案吗?

轩轩

2024-7-22 17:20:37
请问一下大家:是否可以统计出单片机中断的嵌套层数?如何确定出现“HardFault”异常时是在线程中还是中断服务函数中?有没有办法统计出各中断服务函数最大占用的时间?
举报

chenwei6991627

2024-7-23 17:02:59
在你认为可能出问题的地方打log
举报

更多回帖

发帖
×
20
完善资料,
赚取积分