errDump
一、errDump 功能概述
LuatOS 错误日志上报功能模块名叫:errDump,errDump 对“量产投放市场的设备,远程调试初步定位问题”至关重要, 强烈建议客户一定要使用此功能:
errDump 就是将模块运行过程中产生的错误信息或者应用日志通过 TCP/UDP/HTTP 上报到互联网上的指定服务器,技术人员可以在服务器上查阅日志,协助远程了解设备运行情况,或者故障诊断。
迫于服务器压力,只有手动打开 debug 开关,才有日志上报(当使用合宙调试服务器时,开机前先检查一下 log 开关,每 2 小时查询一次 log 开关,如果开关未开启,则不允许上传调试日志)。
二、演示功能概述
本示例将演示上报以下错误内容:
1. 系统主任务运行时的错误日志
此类错误会导致软件重启,错误日志保存在/luaerrinfo.txt 文件中。
2. 调用 sys.taskInit 创建的协程运行过程中的错误日志
此类错误会终止当前协程的运行,但是不会导致软件重启,错误日志保存在/lib_err.txt 中。
3. 调用 errDump.appendErr 或者 sys.restart 接口保存的错误日志
此类错误日志保存在/lib_err.txt 中。
4. 调用 errDump.setNetworkLog 接口打开网络异常日志功能后,会自动保存最近几种网络异常日志
错误日志保存在/lib_network_err.txt 中。
5. 底层固件的死机信息
特别提醒:
其中 2 和 3 保存的错误日志,最多支持 5K 字节。
每次上报错误日志给调试服务器之后,会清空已保存的日志。
三、准备硬件环境
3.1 Air724UG-NFM 开发板
使用 Air724UG-NFM 开发板,如下图所示:
淘宝购买链接:Air724UG-NFM 开发板淘宝购买链接 。
3.2 SIM 卡
请准备一张可正常上网的 SIM 卡,该卡可以是物联网卡或您的个人手机卡。
特别提醒:
- 请确保 SIM 卡未欠费且网络功能正常,以便顺利进行后续操作。
- 专网卡需要找卡商确认 apn 配置信息并进行配置,否则可能无法注网。
- 专网卡需要自备服务器或找卡商将服务器拉入白名单。
3.3 PC 电脑
准备一台电脑;
电脑操作系统为:WIN10 以及以上版本的 WINDOWS 系统。
注意:电脑有 USB 口,并且可以正常上网!!!
3.4 数据通信线
请准备一根用于连接 Air724UG-NFM 开发板和 PC 电脑的数据线,该数据线将实现业务逻辑的控制与交互。您有两种选择:
- USB 数据线(其一端为 micro-B 接口(俗称老安卓口),用于连接 Air724UG-NFM 开发板)。通常,这种数据线的外观如下示意图所示:
3.5 组装硬件环境
组装准备:
组装过程:
1. 请按照 SIM 卡槽上的指示方向正确插入 SIM 卡,务必确保插入方向正确,避免插反导致损坏!
2. 安装天线,保证其网络连接和传输质量。
组装完成:
四、准备软件环境
4.1 安装设备驱动
跳转以下连接按照连接教程,并完成设备驱动的安装:https://docs.openluat.com/usb_drv/
4.2 Luatools 工具
使用说明参考:Luatools 下载和详细使用
4.3 源码及固件
1. 添加底层固件,本次 demo 演示使用 core 版本为:LuatOS-Air_V4028_RDA8910。
2. 添加脚本运行 lib,本次 demo 演示使用的为 Luat_Lua_Air724Ug 仓库最新的 lib 版本。
3. 添加运行脚本,在解压缩 errdump.7z 压缩文件,找到 lua_run_script 文件夹下的 errdump 文件夹进行添加,也可选择 Luat_Lua_Air724Ug 仓库中最新的 errdump demo 文件。
4.4 合宙 TCP/UDP web 测试工具
为了方便测试,合宙提供了免费的不可商用的 TCP/UDP web 测试工具:合宙 TCP/UDP web 工具 (luatos.com)
详细使用说明参考:合宙 TCP/UDP web 测试工具使用说明 。
五、AIR724 硬件资料
六、errdump 主要 API 介绍
6.1 追加错误信息
--- 追加错误信息到LIB_ERR_FILE文件中(文件最多允许存储5K字节的数据)
-- @string s:用户自定义的错误信息,errDump功能模块会对此错误信息做如下处理:
-- 1、重启后会通过Luat下载调试工具输出,在trace中搜索errDump.libErr,可以搜索到错误信息
-- 2、如果用户调用errDump.request接口设置了错误信息要上报的调试服务器地址和端口,则每次重启会自动上报错误信息到调试服务器
-- 3、如果用户调用errDump.request接口设置了定时上报,则定时上报时会上报错误信息到调试服务器
-- 其中第2和第3种情况,上报成功后,会自动清除错误信息
-- @return bool result,true表示成功,false或者nil表示失败
-- @usage errDump.appendErr("net working timeout!")
errDump.appendErr(str)
6.2 配置网络错误日志开关
--- 配置网络错误日志开关
-- @bool[opt=nil] flag,是否打开网络错误日志开关,true为打开,false或者nil为关闭
-- @usage
-- errDump.setNetworkLog(true)
errDump.setNetworkLog(boolean)
6.3 参数配置
--- 配置调试服务器地址,启动错误信息上报给调试服务器的功能,上报成功后,会清除错误信息
-- @string addr,调试服务器地址信息,支持http,udp,tcp
-- 1、如果调试服务器使用http协议,终端将采用POST命令,把错误信息上报到addr指定的URL中,addr的格式如下
-- (除protocol和hostname外,其余字段可选;目前的实现不支持hash)
-- |------------------------------------------------------------------------------|
-- | protocol ||| auth | host | path | hash |
-- |----------|||-----------|-----------------|---------------------------|-------|
-- | ||| | hostname | port | pathname | search | |
-- | ||| |----------|------|----------|----------------| |
-- " http :// user:pass @ host.com : 8080 /p/a/t/h ? query=string # hash "
-- | ||| | | | | | |
-- |------------------------------------------------------------------------------|
-- 2、如果调试服务器使用udp协议,终端将错误信息,直接上报给调试服务器,调试服务器收到信息后,要回复大写的OK;addr格式如下:
-- |----------|||----------|------|
-- | protocol ||| hostname | port |
-- | |||----------|------|
-- " udp :// host.com : 8081 |
-- | ||| | |
-- |------------------------------|
-- 3、如果调试服务器使用tcp协议,终端将错误信息,直接上报给调试服务器;addr格式如下:
-- |----------|||----------|------|
-- | protocol ||| hostname | port |
-- | |||----------|------|
-- " tcp :// host.com : 8082 |
-- | ||| | |
-- |------------------------------|
-- @number[opt=600000] period,单位毫秒,定时检查错误信息并上报的间隔
-- @return bool result,成功返回true,失败返回nil
-- @usage
-- errDump.request("http://www.user_server.com/errdump")
-- errDump.request("udp://www.user_server.com:8081")
-- errDump.request("tcp://www.user_server.com:8082")
-- errDump.request("tcp://www.user_server.com:8082",6*3600*1000)
errDump.request(str,opt)
以上接口函数不做详细介绍,可通过此链接查看具体介绍: API 链接
七、 errdump 实战演练
7.1 配置云平台
7.1.1 云平台配置
合宙云平台:https://iot.openluat.com
7.1.2 打开 IoT 平台
7.1.3 查询设备 imei
imei 查询方式,air724ug 目前有三种方法:
1. 扫描模块二维码。
2. 查看模块丝印获取。
3. 发送 at 指令查询。(注:展锐 8910 平台的模块都可以支持部分 at 指令使用的)
模块开机上电后,在 lua lib2.4.3 版本中该功能在上电后会自动查询,直接搜索对应的打印即可,at 需要发送以下命令才可以查询。
7.1.4 创建项目
注:创建项目后,这里需要找一下合宙的工作人员设置一下设备项目归属,才可以使用 iot 云平台。
7.1.5 打开设备 dbug 状态
7.2 修改 demo 参数
7.2.1 修改上报频率
解压缩 demo 文件后,找到 main.lua 文件对其进行修改,这里修改为 30s 上报一次的频率,实际在项目应用场景中,根据自己的频率设置。
7.2.2 选择脚本运行示例
解压缩 demo 文件后,找到 test_errdump.lua 文件对其进行修改,可以设置多种示例,建议只开启一个示例验证一次的方式,这样在云平台查看时效果可以更加明显,本次演示只设置示例 1 的加载控制参数为 true。
7.3 luatools 下载
添加底层 core、lib 脚本、脚本进行下载,具体添加操作流程请参照章节 4.2 Luatools 工具 篇进行详细查看。
7.4 查看效果
7.4.1 查看上位机效果
打开 luatools 上位机 log 输出界面,在运行示例 1 后,会出现以下 log 信息,可以根据 log 信息去修改对应的脚本。
7.4.2 查看云平台效果
返回浏览器打开合宙云平台,选择 iot 功能下的调式日志输入 imei 进行查看。
八、总结
本文章对 errdump demo 的具体使用进行了详细讲解,扩展了读者对 luat 在运行中的错误处理。
扩展
常见问题
给读者的话
本篇文章由
DreamChen
开发;本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;
请登录合宙技术交流论坛,点击文档找错赢奖金-Air724UG-LuatOS-软件指南-LuatOS基础-errDump;
用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;
我们会迅速核实并且修改文档;
同时也会为您累计找错积分,您还可能赢取月度找错奖金!