跳转至

日志与崩溃分析

日志是产品的一部分,不是临时的调试手段。完善的日志可以缩短启动调试、现场排查和工厂故障调查所需的时间。

应在首次现场测试前设计日志机制。设备在现场发生故障后,你只能获得固件预先准备保存或输出的数据。

最低日志配置

每个固件构建都应记录:

  • 固件版本。
  • SDK 分支或提交。
  • 开发板型号和硬件版本。
  • 启动原因。
  • 分区布局版本。
  • 主要子系统初始化结果。
  • 启动失败时输出的崩溃信息或断言信息。

崩溃分析流程

  1. 在基线固件已验证可正常运行的开发板上复现问题。
  2. 从复位开始采集完整启动日志。
  3. 保存与故障版本完全对应的二进制文件和符号文件。
  4. 使用思澈科技(SiFli)的工具解码断言(assert)或转储(dump)输出。
  5. 检查栈空间大小、内存归属、DMA 缓冲区及缓存维护。
  6. 参照最接近的 SDK 示例缩小问题范围。

日志级别

表:日志级别
阶段 建议日志
板级启动调试 详细的外设和启动日志。
功能开发 围绕正在验证的功能输出模块级调试日志。
功耗调优 尽量减少日志,因为日志输出本身会影响功耗。
发布候选版本 警告、错误、版本、启动原因和关键健康检查。
现场诊断构建 围绕疑似子系统输出有针对性的日志。

崩溃报告应包含的信息

  • 包含从复位到崩溃的完整日志。
  • 标明发生故障时对应的固件二进制文件。
  • 包含符号文件或可复现构建。
  • 说明未经修改的 SDK 示例是否也会出现相同崩溃。
  • 列出已连接的外设和供电来源。
  • 说明全片擦除并重新烧录后,崩溃是否仍然存在。

最后更新: