一种BLF文件解析容错方法、装置及计算机设备制造方法及图纸

技术编号:35062332 阅读:17 留言:0更新日期:2022-09-28 11:17
本发明专利技术实施例提供了一种BLF文件解析容错方法、装置及计算机设备,方法包括:当BLF文件的文件头解析异常时,继续查找数据段头的开始标记,以从数据段头处继续解析BLF文件;当压缩数据段解压缩异常时,解析程序弃用当前数据段的数据段头中记录的压缩数据,查找下一个数据段的数据段头的开始标记;根据下一个数据段的数据段头的起始位置,计算当前数据段的数据压缩后长度,截取压缩数据并进行解压缩;在数据解压后的报文解析阶段,读取当前报文头中的报文长度,并判断该报文长度是否为有效长度,若否,主动向后查找下一个报文头的开始标记,根据下一个报文头的起始位置计算当前报文的有效长度,根据该有效长度截取当前报文进行解析。析。析。

【技术实现步骤摘要】
一种BLF文件解析容错方法、装置及计算机设备


[0001]本专利技术涉及计算机应用
,具体而言,涉及一种BLF文件解析容错方法、装置及计算机设备。

技术介绍

[0002]随着汽车各系统的控制逐步向自动化和智能化转变,汽车电气系统逐渐复杂化,汽车总线技术应运而生。汽车总线通讯数据记录在日志文件中,以便进行场景还原,进而进行问题分析定位,其中,所还原的实际场景对问题定位与分析起着至关重要的作用。
[0003]BLF(Binary Logging Format)格式的日志文件由于占用空间小,而广泛应用于汽车总线通讯数据的记录。读取BLF文件中报文信息需要使用专业工具进行文件解析,目前的解析机制大都严格按照标准的BLF文件格式进行数据解析,但在实际应用中所生成的BLF文件可能存在文件不完整、数据错位和数据错误等问题,如果严格按照标准的BLF文件格式解析上述有问题的日志文件,则会导致解析程序提前中止,部分报文无法解析,进而无法进行实际场景还原和问题分析定位。

技术实现思路

[0004]本说明书提供一种BLF文件解析容错方法、装置及计算机设备,用以克服现有技术中存在的至少一个技术问题。
[0005]第一方面,根据本说明书实施例,提供了一种BLF文件解析容错方法,所述BLF文件包括文件头、数据段头、压缩数据段,所述数据段头设置有标示数据段头的起始位置的开始标记,所述压缩数据段解压后的数据包括报文头、报文,所述报文头中记录了报文类型、报文长度,所述报文头设置有标示所述报文头的起始位置的开始标记,所述方法包括:
[0006]当所述BLF文件的文件头解析异常时,继续查找所述数据段头的开始标记,以从所述数据段头处继续解析所述BLF文件;
[0007]当所述压缩数据段解压缩异常时,解析程序弃用当前数据段的数据段头中记录的压缩数据,查找下一个数据段的数据段头的开始标记;所述压缩数据包括数据压缩前长度和数据压缩后长度;
[0008]根据所述下一个数据段的数据段头的起始位置,计算所述当前数据段的数据压缩后长度;根据所述当前数据段的数据压缩后长度,截取压缩数据并进行解压缩,以还原压缩前的数据;
[0009]在数据解压后的报文解析阶段,读取当前报文头中的报文长度,并判断所述当前报文头中的报文长度是否为有效长度,若否,主动向后查找下一个报文头的开始标记,根据所述下一个报文头的起始位置计算所述当前报文的有效长度,之后,根据所述当前报文的有效长度截取所述当前报文进行解析。
[0010]可选的,所述BLF文件的文件头解析是否异常的判断包括:
[0011]判断所述BLF文件是否具有文件头;
[0012]若所述BLF文件不具有文件头,则判定所述BLF文件的文件头解析异常;
[0013]若所述BLF文件具有文件头,则判断所述文件头的报文数是否大于0;
[0014]如果所述报文数大于0,则进入压缩数据段解压缩阶段;
[0015]如果所述报文数不大于0,则判定所述BLF文件的文件头解析异常。
[0016]可选的,所述压缩数据段解压缩阶段还包括:
[0017]继续读取所述BLF文件,判断是否为所述BLF文件的文件尾部;
[0018]若判断结果为是,则解析结束;
[0019]若判断结果为否,则读取所述当前数据段的数据段头中的压缩数据;
[0020]根据所述当前数据段的数据段头中的压缩数据,解析所述当前数据段的数据压缩前长度;
[0021]利用解压缩算法对所述当前数据段进行解压缩,依据所述当前数据段的数据压缩前长度还原所述当前数据段压缩前的数据;
[0022]当所述当前数据段解压缩成功时,继续读取所述BLF文件,判断是否为数据段尾部;
[0023]若判断结果为是,则重复上述压缩数据段解压缩阶段的过程;
[0024]若判断结果为否,则进入所述报文解析阶段。
[0025]进一步可选的,所述根据所述当前数据段的数据压缩后长度,截取压缩数据并进行解压缩,以还原压缩前的数据具体包括:
[0026]根据所述当前数据段的数据压缩后长度截取压缩数据;
[0027]对截取的压缩数据进行解压缩,并实时探测数组溢出风险,根据所述截取的压缩数据的解压缩需要对数组动态扩容。
[0028]可选的,所述报文解析阶段还包括:
[0029]若所述当前报文头中的报文长度为有效长度,则根据所述当前报文的报文长度截取相应长度的字节数组,利用报文解析方法进行报文解析;
[0030]报文解析成功后,输出一条报文。
[0031]可选的,所述根据所述下一个报文头的起始位置计算所述当前报文的有效长度,之后,根据所述当前报文的有效长度截取所述当前报文进行解析具体包括:
[0032]根据所述下一个报文头的起始位置,计算所述当前报文的有效长度;
[0033]根据所述当前报文的有效长度截取相应长度的字节数组,利用报文解析方法对截取的字节数组进行报文解析;
[0034]报文解析成功后,输出一条报文。
[0035]进一步可选的,所述当前报文头中的报文长度是否为有效长度的判断包括:
[0036]获取预设报文长度,将所述当前报文头中的报文长度与所述预设报文长度进行匹配;所述预设报文长度包括已知任意报文类型所允许的报文长度;
[0037]若匹配成功,则判定所述当前报文头中的报文长度为有效长度;
[0038]若匹配失败,则判定所述当前报文头中的报文长度不是有效长度。
[0039]再进一步可选的,所述获取预设报文长度,将所述当前报文头中的报文长度与所述预设报文长度进行匹配具体包括:
[0040]读取所述当前报文头中的报文类型;
[0041]根据所述报文类型,获取所述报文类型所允许的报文长度;
[0042]计算所述当前报文头中的报文长度与当前报文头长度的差值,得到数据段长度;
[0043]将所述数据段长度与所述报文类型所允许的报文长度进行对比。
[0044]第二方面,根据本说明书实施例,还提供了一种BLF文件解析容错装置,所述BLF文件包括文件头、数据段头、压缩数据段,所述数据段头设置有标示数据段头的起始位置的开始标记,所述压缩数据段解压后的数据包括报文头、报文,所述报文头中记录了报文类型、报文长度,所述报文头设置有标示所述报文头的起始位置的开始标记,所述装置包括:
[0045]文件头容错模块,用于在所述BLF文件的文件头解析异常时,继续查找所述数据段头的开始标记,以从所述数据段头处继续解析所述BLF文件;
[0046]数据段头容错模块,用于在所述压缩数据段解压缩异常时,解析程序弃用当前数据段的数据段头中记录的压缩数据,查找下一个数据段的数据段头的开始标记,根据所述下一个数据段的数据段头的起始位置,计算所述当前数据段的数据压缩后长度,之后,根据所述当前数据段的数据压缩后长度,截取压缩数据并进行解压缩,以还原压缩前的数据;所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种BLF文件解析容错方法,其特征在于,所述BLF文件包括文件头、数据段头、压缩数据段,所述数据段头设置有标示数据段头的起始位置的开始标记,所述压缩数据段解压后的数据包括报文头、报文,所述报文头中记录了报文类型、报文长度,所述报文头设置有标示所述报文头的起始位置的开始标记,所述方法包括:当所述BLF文件的文件头解析异常时,继续查找所述数据段头的开始标记,以从所述数据段头处继续解析所述BLF文件;当所述压缩数据段解压缩异常时,解析程序弃用当前数据段的数据段头中记录的压缩数据,查找下一个数据段的数据段头的开始标记;所述压缩数据包括数据压缩前长度和数据压缩后长度;根据所述下一个数据段的数据段头的起始位置,计算所述当前数据段的数据压缩后长度;根据所述当前数据段的数据压缩后长度,截取压缩数据并进行解压缩,以还原压缩前的数据;在数据解压后的报文解析阶段,读取当前报文头中的报文长度,并判断所述当前报文头中的报文长度是否为有效长度,若否,主动向后查找下一个报文头的开始标记,根据所述下一个报文头的起始位置计算所述当前报文的有效长度,之后,根据所述当前报文的有效长度截取所述当前报文进行解析。2.根据权利要求1所述的BLF文件解析容错方法,其特征在于,所述BLF文件的文件头解析是否异常的判断包括:判断所述BLF文件是否具有文件头;若所述BLF文件不具有文件头,则判定所述BLF文件的文件头解析异常;若所述BLF文件具有文件头,则判断所述文件头的报文数是否大于0;如果所述报文数大于0,则进入压缩数据段解压缩阶段;如果所述报文数不大于0,则判定所述BLF文件的文件头解析异常。3.根据权利要求1所述的BLF文件解析容错方法,其特征在于,所述压缩数据段解压缩阶段还包括:继续读取所述BLF文件,判断是否为所述BLF文件的文件尾部;若判断结果为是,则解析结束;若判断结果为否,则读取所述当前数据段的数据段头中的压缩数据;根据所述当前数据段的数据段头中的压缩数据,解析所述当前数据段的数据压缩前长度;利用解压缩算法对所述当前数据段进行解压缩,依据所述当前数据段的数据压缩前长度还原所述当前数据段压缩前的数据;当所述当前数据段解压缩成功时,继续读取所述BLF文件,判断是否为数据段尾部;若判断结果为是,则重复上述压缩数据段解压缩阶段的过程;若判断结果为否,则进入所述报文解析阶段。4.根据权利要求3所述的BLF文件解析容错方法,其特征在于,所述根据所述当前数据段的数据压缩后长度,截取压缩数据并进行解压缩,以还原压缩前的数据具体包括:根据所述当前数据段的数据压缩后长度截取压缩数据;对截取的压缩数据进行解压缩,并实时探测数组溢出风险,根据所述截取的压缩数据
的解压缩需要对数组动态扩容。5.根据权利要求1所述的BLF文件解析容错方法,其特征在于,所述报文解析阶段还包括:若所述当前报文头中的报文长度为有效长度,则根据所述当前报文的报文长...

【专利技术属性】
技术研发人员:刘利平刘振宇曹海成
申请(专利权)人:北京经纬恒润科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1