当前位置: 首页 > news >正文

利用LuatOS的errDump功能实现运行时错误追踪与上报

当嵌入式设备在运行中遭遇崩溃或逻辑异常时,及时获取错误上下文是快速定位问题的关键。LuatOS中的errDump功能正是为此设计,它能自动捕获Lua运行时的错误堆栈,并支持自定义上报策略,帮助开发者构建更可靠的物联网应用。

一、概述

LuatOS 异常日志上报功能模块名叫:errDump,errDump 对"量产投放市场的设备,远程调试初步定位问题"至关重要,强烈建议用户一定要使用此功能

原理:errDump 就是将模块运行过程中产生的异常信息或者用户调试日志通过 UDP 上报到互联网上的指定服务器,技术人员可以在服务器上查阅日志,协助远程了解设备运行情况,或者故障诊断。

支持日志自动上报到IOT平台,也支持自动上报到用户自己的UDP服务器,也支持手动读取出异常日志,通过tcp或者串口发送出去 使用云服务器时,迫于服务器压力,只有在iot平台手动打开 debug 开关,才有日志上报。 需要注意的是,使用自动上报到自己的UDP服务器时,收到上报的errdump日志需要返回一个大写的“OK”,否则模组会认为没有上报成功,会重复上报。
下面是使用errdump的几种情况:
image

1.1 errDump有什么用?

errDump是LuatOS系统中的异常日志上报模块,主要用于远程调试与故障诊断。其核心价值体现在:

实时监控设备状态:将设备运行时的错误信息或用户调试日志通过UDP协议上报到指定服务器。

支持量产设备维护:对于已投放市场的设备,无需现场调试即可远程定位问题,显著降低维护成本。

灵活配置:用户可自定义上报周期、服务器地址及日志类型,适应不同场景需求。

1.2 errDump中存储的错误信息及日志类型

目前errdump支持2类错误日志的储存与上报:

  1. errDump.TYPE_SYS

系统异常日志是指程序运行过程中产生的异常信息,例如程序崩溃、内存泄漏、死循环、脚本错误等。系统异常日志会自动写入到errDump模块中,如果使用自动上报到iot平台则在异常重启后会自动读取并上报,如果是自行读取上报的话可通过errDump.dump(buff,errDump.TYPE_SYS, ture) 来读取系统异常日志并根据自己需求自定义传输。

  1. errDump.TYPE_USR

用户自行写入调试日志是通过 errDump.record() 接口来保存的,如果设置了定时上报周期的话则会定期上报到服务器中,如果自行读取上报的话可以通过 errDump.dump(buff, errDump.TYPE_USR, true) 来读取用户写入的调试日志并根据自己需求自定义传输。

1.3 存储区域与空间管理

日志文件都是储存在文件系统中。

errDump.TYPE_SYS和errDump.TYPE_USR的日志文件最大分别都是4KB;日志达到4KB时,新写入内容覆盖旧数据。

1.4 日志上报与读取方式

  1. 自动上报

通过errDump.config(enable, period, user_flag, custom_id, host, port)配置服务器地址和周期(默认600秒)。上报成功后,本地日志自动清空。
image

  1. 手动读取 使用errDump.dump(zbuff, type, isDelete)读取日志,支持指定类型(如系统日志、用户日志)并选择是否删除。

  2. 自定义传输

禁用自动上报后,用户可通过errDump.dump()获取日志内容,再通过MQTT、TCP、UART等方式发送出去。

1.5 日志清除机制

  1. 自动清除:

设置自动模式的话,上报到服务器成功后,本地日志自动删除。

  1. 手动清除:

设置手动读取模式,调用errDump.dump(nil, type, true)指定日志类型并删除。

  1. 覆盖策略:

系统/用户日志达到4KB时,新写入内容覆盖旧数据。

二、核心示例

1、核心示例是指:使用本库文件提供的核心API,开发的基础业务逻辑的演示代码;

2、核心示例的作用是:帮助开发者快速理解如何使用本库,所以核心示例的逻辑都比较简单;

示例
image

三、常量详解

核心库常量,顾名思义是由 LuatOS 内核固件中定义的、不可重新赋值或修改的固定值,在脚本代码中不需要声明,可直接调用;

每个常量对应的常量取值仅做日志打印时查询使用,不要将这个常量取值用做具体的业务逻辑判断,因为LuatOS内核固件可能会变更每个常量对应的常量取值;

如果用做具体的业务逻辑判断,一旦常量取值发生改变,业务逻辑就会出错;

3.1 errDump.TYPE_SYS

image

3.2 errDump.TYPE_USR

image

四、函数详解

errDump.dump(zbuff, type, isDelete)

功能

手动读取异常日志,主要用于用户将日志发送给自己的服务器而不是合宙IOT平台,如果在errDump.config配置了周期上传,则不能使用本函数

参数

zbuff
image

type
image

isDelete
image

返回值

local result = errDump.dump(buff, errDump.TYPE_SYS, false)

有一个返回值 result

result

image

示例
image

errDump.record(message)

功能

写入用户自定义日志,注意最大只有4KB,超过部分新的覆盖旧的,开启自动上传后会上传到合宙IOT平台

参数

message
image

返回值

示例
image

errDump.config(enable, period, user_flag, custom_id, host, port, adapter)

功能

配置errdump日志记录功能,这里的日志包括引起luavm异常退出的日志和用户通过record写入的日志。

参数

enable
image

period
image

user_flag
image

custom_id

image

host
image

port

image

adapter

image

返回值

示例
image

五、模组支持说明

支持 LuatOS 开发的所有模组都支持 errDump 核心库。

今天的内容就分享到这里了~

http://www.jsqmd.com/news/370491/

相关文章:

  • 洗地机哪个品牌好?2026年洗地机产品推荐与排名,解决维护与性价比核心痛点 - 品牌推荐
  • 铝箔胶带怎么选?基材纯度、耐候性与定制化服务Top5厂家全攻略 - 深度智识库
  • OpenClaw从本地运行时到云端推理的完全接管机制与安全边界
  • 2026银川酒店民宿装修推荐哪家?专业工装 实力品牌 省心落地指南 - 宁夏壹山网络
  • 2026年度儿童牙膏品牌TOP5综合评估与选型指南 - 品牌推荐
  • 2026年2月,为你推荐评价好的资质代办公司,代办营业执照/注册公司/资质代办/代办公司/公司注册,代办公司推荐 - 品牌推荐师
  • 杭州GEO优化推荐:2026年提升搜索可见度的优选,GEO优化/GEO优化服务,GEO优化实力厂家找哪家 - 品牌推荐师
  • 2026年度儿童牙膏品牌推荐榜单:成分安全与防蛀功效双维度综合评估 - 品牌推荐
  • 2026年儿童牙膏品牌推荐:基于分龄护理趋势评价,针对龋齿与成分焦虑提供选购推荐 - 品牌推荐
  • 告别论文恐惧症!实测6款免费AI写论文工具,写作无压力,初稿轻松搞定! - 麟书学长
  • a16z 领投 AI 伴侣 Shizuku AI:让社区参与 AI 角色成长;夸克 AI 眼镜新增直播功能丨日报
  • 开封金盛机械:定制种子加工生产线 全系列设备赋能全球 - 朴素的承诺
  • 电气铁路柔性过分相:从供电臂a到供电臂b的换相之旅
  • win11 wsl2安装Ubuntu详细步骤
  • 使用 Visual Studio 2022 其他语言乱码问题
  • 4090模型切换
  • wireshark
  • 基于DirectX和C#的三维显示控件实现
  • Codeforces Round 1078 (Div. 2) A,B,C,D,E,F1个人题解 - CUC
  • Distributed Hybrid Parallelism for Large Language Models Comparative Study and System Design Guide
  • 铝箔胶带行业深度报告:五大标杆企业解析与市场趋势洞察 - 深度智识库
  • 中国OIer失去OI体力了?
  • opengauss中安装PostGIS - 教程
  • 中原装备标杆 开封金盛机械赋能多领域加工升级 - 朴素的承诺
  • 国内十大老字号制药公司,百姓信赖的健康标杆 - 包罗万闻
  • 自动化立体仓库品牌深度对比评测:全栈自研与行业定制成核心竞争力 - 品牌策略主理人
  • 输入停车场各区域实时车位,引导车辆驶向空闲最多的区域。
  • 强烈安利 9个 AI论文网站:本科生毕业论文写作全测评
  • Oppo应用市场获取商店URL
  • ooderNexus 实测揭秘:一个正在成长的 P2P AI 能力分发平台