CN117931763A - 嵌入式系统的日志信息生成方法及电子设备、存储介质 - Google Patents
嵌入式系统的日志信息生成方法及电子设备、存储介质 Download PDFInfo
- Publication number
- CN117931763A CN117931763A CN202410141321.7A CN202410141321A CN117931763A CN 117931763 A CN117931763 A CN 117931763A CN 202410141321 A CN202410141321 A CN 202410141321A CN 117931763 A CN117931763 A CN 117931763A
- Authority
- CN
- China
- Prior art keywords
- parameter
- character string
- data
- embedded system
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000004458 analytical method Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims abstract description 16
- 239000000284 extract Substances 0.000 claims abstract description 4
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 4
- 101100379633 Xenopus laevis arg2-a gene Proteins 0.000 description 2
- 101150088826 arg1 gene Proteins 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 101150035983 str1 gene Proteins 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种嵌入式系统的日志信息生成方法及电子设备、存储介质,包括:目标设备基于预设参数名列表和参数名列表对应的类型位图,通过自身嵌入式系统的日志输出函数输出二进制流日志数据;其中,二进制流日志数据包括字符串索引和参数名列表对应的参数列表,类型位图指示参数列表中各个参数的参数类型,参数类型包括动态数据和非动态数据;解析设备从二进制流日志数据中提取出字符串索引,并基于字符串索引在本地字典中查找对应的字符串;解析设备基于字符串和参数列表,生成日志信息。本申请方案,能够精确区分动态数据和非动态数据,有效控制日志数据的数据量,节省格式描述字符串在嵌入式系统的内存开销。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种嵌入式系统的日志信息生成方法及电子设备、计算机可读存储介质。
背景技术
目前很多嵌入式系统的内存资源都很紧张,对于一个总代码量数百KB(千字节)的系统而言,其调试(debug)所用的format string(格式描述字符串)可以占用10%以上的内存资源,这对于一个资源受限的系统来说是一笔不小的开销。对于一个非量产的有调试需求的嵌入式系统而言,有时候format string是必不可少的部分,但是相对而言上位机所拥有的资源比嵌入式系统要多得多,无论从功耗还是从内存的角度来看,将这部分formatstring数据放到上位机来处理都是一个可行的方案。
相关方案提出对format string进行压缩处理,比如通过地址偏移的转换或者通过哈希表的转换,尝试将压缩之后的format string索引进行传输或者存储,然后将地址偏移表或哈希表通过不占用嵌入式系统内存资源的方式存储或发放。在嵌入式系统输出日志信息时,可以将嵌入式系统输出format string索引在地址偏移表或哈希表中查找formatstring,并将查到的format string与动态数据结合,从而获得嵌入式系统的完整日志信息。
然而,相关方法并未公开如何处理动态数据的问题,如果动态数据不做特殊处理,会导致动态数据无法正常解析;如果对动态数据做特殊处理,则难以与现有的压缩技术共存。
发明内容
本申请实施例的目的在于提供一种嵌入式系统的日志信息生成方法及电子设备、存储介质,用于对包含动态数据的日志和不包含动态数据的日志以统一方式进行处理,且能够精确区分动态数据和非动态数据,有效控制日志数据的数据量,节省格式描述字符串在嵌入式系统的内存开销。
一方面,本申请提供了一种嵌入式系统的日志信息生成方法,包括:
目标设备基于预设参数名列表和所述参数名列表对应的类型位图,通过自身嵌入式系统的日志输出函数输出二进制流日志数据;其中,所述二进制流日志数据包括字符串索引和所述参数名列表对应的参数列表,所述类型位图指示所述参数列表中各个参数的参数类型,所述参数类型包括动态数据和非动态数据;
解析设备从所述二进制流日志数据中提取出所述字符串索引,并基于所述字符串索引在本地字典中查找对应的字符串;
所述解析设备基于所述字符串和所述参数列表,生成日志信息。
在一实施例中,所述目标设备基于预设参数名列表和所述参数名列表对应的类型位图,通过自身嵌入式系统的日志输出函数输出二进制流日志数据,包括:
在输出二进制流日志数据时,逐个读取所述参数名列表中的各个参数名,并在所述类型位图中确定该参数名对应参数的参数类型;
如果所述参数类型为动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数依次进行动态输出,直至输出完毕;
如果所述参数类型为非动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数以指定长度输出;
其中,所述参数名列表中所有参数名对应的输出结果构成所述二进制流日志数据的参数列表。
在一实施例中,所述非动态数据包括多种子类型,每一子类型对应一个指定长度;
所述如果所述参数类型为非动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数以指定长度输出,包括:
如果所述参数类型为非动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数以其对应的子类型的指定长度进行输出。
在一实施例中,所述动态数据包括多种子类型;
所述解析设备基于所述字符串和所述参数列表,生成日志信息,包括:
所述解析设备基于所述字符串确定所述参数列表中各项参数的子类型,并分别依据各项参数的子类型对应解析方式,从所述参数列表中解析出各项参数;
所述解析设备依据所述字符串和解析出的各项参数,生成日志信息。
在一实施例中,所述方法还包括:
所述目标设备的嵌入式系统,在运行过程中动态加载所述参数名列表对应的类型位图。
在一实施例中,所述方法还包括:
在编译所述嵌入式系统的固件文件时,扫描与多种日志数据相关的字符串,并基于扫描结果生成与每一种日志数据对应的类型位图,将生成的类型位图写入至所述嵌入式系统的固件文件。
在一实施例中,所述方法还包括:
扫描本地字典中的所有字符串,并基于扫描结果生成与每一字符串对应的类型位图;
所述目标设备获取所述类型位图,并写入至所述嵌入式系统。
在一实施例中,所述方法还包括:
响应于位图编辑指令,对所述位图编辑指令指示的类型位图进行调整,以更新所述类型位图内至少一个参数的参数类型。
在一实施例中,所述方法还包括:
在编译所述嵌入式系统的固件文件时,为多种日志数据相关的字符串生成字符串索引,并基于所述字符串以及对应于所述字符串的字符串索引,生成字典;其中,所述固件文件内相同字符串对应唯一字符串索引;
将所述字典传递至所述解析设备。
另一方面,本申请提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述应用于目标设备或解析设备的嵌入式系统的日志信息生成方法。
进一步的,本申请提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述应用于目标设备或解析设备的嵌入式系统的日志信息生成方法。
本申请方案,能够通过类型位图指示日志数据中各个参数的参数类型,可以精确区分动态数据和非动态数据,从而可以有效控制二进制流日志数据的数据量,并通过字符串索引替代字符串而节省格式描述字符串在嵌入式系统的内存开销,减少动态非动态混合日志的存储开销以及传输开销;此外,本方案可以通过嵌入式系统的日志输出函数输出二进制流日志数据,且包含动态数据的日志和不包含动态数据的日志可以通过同一函数处理,有效减少了嵌入式系统的学习成本。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的嵌入式系统的日志信息生成方法的应用场景示意图;
图2为本申请一实施例提供的电子设备的结构示意图;
图3为本申请一实施例提供的嵌入式系统的日志信息生成方法的流程示意图;
图4为本申请一实施例提供的二进制流日志数据的输出方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1为本申请实施例提供的嵌入式系统的日志信息生成方法的应用场景示意图。如图1所示,该应用场景包括目标设备20和解析设备30;目标设备20搭载嵌入式系统,在嵌入式系统运行过程中可以产生二进制流日志数据,并将二进制流日志数据交由解析设备30处理;解析设备30用于对二进制流日志数据进行处理,获得嵌入式系统的日志信息。
如图2所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图2中以一个处理器11为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备1可以是上述目标设备20,用于执行应用于目标设备20的嵌入式系统的日志信息生成方法。在一实施例中,电子设备1可以是上述解析设备30,用于执行应用于解析设备30的嵌入式系统的日志信息生成方法。
存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器11执行以完成本申请提供的嵌入式系统的日志信息生成方法。
参见图3,为本申请一实施例提供的嵌入式系统的日志信息生成方法的流程示意图,如图3所示,该方法可以包括以下步骤310-步骤330。
步骤310:目标设备基于预设参数名列表和参数名列表对应的类型位图,通过自身嵌入式系统的日志输出函数输出二进制流日志数据;其中,二进制流日志数据包括字符串索引和参数名列表对应的参数列表,类型位图指示参数列表中各个参数的参数类型,参数类型包括动态数据和非动态数据。
目标设备所搭载的嵌入式系统的代码中在每一处需要输出日志数据的位置设置有参数名列表,该参数名列表指示日志数据中包括的若干参数的参数名。
目标设备的嵌入式系统在运行过程中,可以通过日志输出函数(比如:debug_log)输出二进制流日志数据(stream log),该二进制流日志数据包括字符串索引和参数名列表对应的参数列表。二进制流日志数据中不包括指示格式描述字符串,因此,目标设备的嵌入式系统节省了格式描述字符串所占用的内存开销。在一实施例中,二进制流日志数据包括日志三元组,日志三元组包括字符串索引、参数列表和类型位图。在一实施例中,二进制流日志数据无需包含类型位图,包括字符串索引和参数列表。
示例性的,格式描述字符串为“This is a dynamic string example withstatic string sample,and we’re in a computer named%s of MAC addr%s,and in aC src filename:%s and Line No.%d.\n”,其对应的日志三元组可以记为(id1,arg1,bitmap1),这里,id1表示字符串索引,arg1表示参数名列表对应的参数列表,bitmap1表示类型位图。id1为1234568,参数名列表为(computer_name,mac_addr,__FILE__,__LINE__),字符串中各个参数对应的占位符为“%s%s%s%d”,%s表示动态数据,%d表示非动态数据。将“%s%s%s%d”通过类型位图bitmap1表示为1110,该类型位图中,一个比特位对应一个参数,1表示参数类型为动态数据,0表示参数类型为非动态数据。动态数据指的是动态显示的字符串数据,非动态数据是除了动态数据以外的其它非结构化数据。
需要说明的是,对于格式描述字符串中的某些%s,可以通过编译器预编译宏的展开将其转换为非动态数据,可以根据需要进行配置。
步骤320:解析设备从二进制流日志数据中提取出字符串索引,并基于字符串索引在本地字典中查找对应的字符串。
步骤330:解析设备基于字符串和参数列表,生成日志信息。
解析设备是解析嵌入式系统的日志数据的设备,解析设备可以是目标设备的上位机,也可以是其它设备。
解析设备从目标设备获取二进制流日志数据之后,可以从二进制流日志数据中解析出字符串索引。在获得字符串索引之后,可以基于字符串索引在本地字典中查找对应的字符串。其中,字典内记录多个字符串索引与字符串之间的映射关系,字符串索引可以通过预配置、哈希计算等方式得到。
字典中的映射关系可以记为(id1,str1),这里,id1表示字符串索引,str1表示字符串。示例性的,字典中的一条映射关系可以记为(12345678,“This is a dynamic stringexample with static string sample,and we’re in acomputer named%s of MACaddr%s,and in a C src filename:%s and LineNo.%d.\n”)。
在获得与日志三元组对应的字符串之后,解析设备可以从二进制流日志数据的参数列表中解析出各项参数的具体内容,并将各项参数的具体内容与字符串结合,得到日志信息(format log)。
通过上述措施,本方案能够通过类型位图指示日志数据中各个参数的参数类型,可以精确区分动态数据和非动态数据,从而可以有效控制二进制流日志数据的数据量,并通过字符串索引替代字符串而节省格式描述字符串在嵌入式系统的内存开销,减少动态非动态混合日志的存储开销;此外,本方案可以通过嵌入式系统的日志输出函数输出二进制流日志数据,且包含动态数据的日志和不包含动态数据的日志可以通过同一函数处理,有效减少了嵌入式系统的学习成本。
在一实施例中,参见图4,为本申请一实施例提供的二进制流日志数据的输出方法的流程示意图,如图4所示,该方法可以包括如下步骤410至步骤430。
步骤410:在输出结构化二进制数据形式的二进制流日志数据时,逐个读取参数名列表中的各个参数名,并在类型位图中确定该参数名对应参数的参数类型。
嵌入式系统运行过程中,在输出结构化二进制形式的二进制流日志数据到串口或闪存时,可以逐个读取当前日志数据对应参数名列表中的各个参数名,并在每次读取到一个参数名时,可以在该参数名列表对应的类型位图中确定该参数名对应参数的参数类型。
步骤420:如果参数类型为动态数据,依据参数名对应的栈数据,将参数名对应参数依次进行动态输出,直至输出完毕。
在参数类型为动态数据的情况下,栈数据记录参数本身或者存储参数的地址信息,依据栈数据,可以将该参数名对应的参数依次进行动态输出,换而言之,动态输出栈数据,或者从地址信息所在位置动态输出数据,从而输出字符串,直到输出结束符\0,可以确定该参数输出完毕。
步骤430:如果参数类型为非动态数据,依据参数名对应的栈数据,将参数名对应参数以指定长度输出。
在参数类型为非动态数据的情况下,栈数据记录参数本身或者存储参数的地址信息,依据栈数据,可以将该参数名对应的参数依据指定长度进行输出。换而言之,输出指定长度的栈数据,或者,从地址信息所在位置输出指定长度的数据。这里,指定长度可以根据需要进行配置。示例性的,如果搭载嵌入式系统的目标设备的CPU为32比特,则栈处理效率为4个字节,可以通过4个字节表示一个参数,指定长度可以设为4个字节。
将参数名列表中各个参数名的具体内容逐个输出之后,可以将所有参数名对应的输出结果构成二进制流日志数据的参数列表。
此外,基于嵌入式系统内所记录的字符串索引和参数列表,可以构成二进制流日志数据。
通过该措施,在输出二进制流日志数据时,可以基于类型位图准确区分各个参数的参数类型,从而有效处理日志中的动态数据和非动态数据,从而有效控制二进制流日志数据的数据量。
在一实施中,非动态数据可以包括多种子类型,每一子类型的数据长度不同,因此,每一子类型对应一个指定长度,不同子类型的指定长度可能相同,也可能不同。
这种情况下,类型位图可以指示更丰富的参数类型,示例性的,参数列表中每一参数在类型位图中对应两个比特位,“00”指示参数类型为%d;“01”指示参数类型为%c;“10”指示参数类型为%e;“11”指示参数类型为%s。这里,参数类型%d、%c和%e均属于非动态数据,%d代表一个整型,对应的指定长度为4个字节;%c代表一个单字符类型,对应的指定长度为1个字节;%e代表高精度浮点数,对应的指定长度为8个字节。
在本实施例中,执行步骤410至步骤430的过程中,如果任一参数名对应参数的参数类型为非动态数据,可以依据该参数名对应的栈数据,将参数名对应参数以其对应的子类型的指定长度进行输出。
通过该措施,以包括更丰富信息的类型位图可以更精准地指示各类参数的数据长度,而非泛泛地以单一长度控制非动态数据输出,可以更加节省参数列表中各个参数的空间表达,降低二进制流日志数据的数据量。
在本实施例中,如果类型位图提供更复杂的信息,以实现更丰富的功能,可以通过压缩算法对类型位图进行压缩处理,并在输出二进制流日志数据时对已压缩的类型位图进行解压,从而降低类型位图占空的内存资源。
在一实施例中,动态数据包括多种子类型,每一子类型的数据长度、解析方式可能不同。
解析设备执行步骤330时,可以基于字符串确定参数列表中各项参数的子类型。这里,可以基于字符串内各项参数所在位置的占位符,确定子类型。解析设备可以分别依据各项参数对应解析方式,从参数列表中解析出各项参数。这里,解析设备上预配置动态数据各个子类型对应的解析方式。
在获得各项参数之后,解析设备可以依据字符串和解析出的各项参数,融合得到日志信息。
通过该措施,解析设备可以依据动态数据的子类型对参数列表中的各个子类型的动态数据进行灵活解析。
在一实施例中,目标设备的嵌入式系统,可以在运行过程中动态加载参数名列表对应的类型位图。此时,类型位图可以放入BSS(Block Started by Symbol)段或单独的data段,在嵌入式系统运行时,当需要类型位图生效时,可以对该类型位图进行动态加载。
在将类型位图放入BSS段的情况下,嵌入式系统无需用户输入类型位图,而可以将类型位图定义为0,可以不占用存储内存空间。
通过在运行时动态加载类型位图,提高了嵌入式系统的易用性。
在一实施例中,在编译嵌入式系统的固件文件时,可以扫描与多种日志数据相关的字符串,从而获得与每一字符串对应的扫描结果。这里,扫描结果可以为字符串内各个占位符。基于扫描结果生成与每一种日志数据对应的类型位图,并可以将生成的类型位图写入至嵌入式系统的固件文件。此时,可以将类型位图放入data段,会占用存储内存空间。
示例性的,如果任一字符串内的多个占位符为“%s%s%s%s%d%s%d”,且参数列表中一个参数在类型位图中对应一个比特位,该比特位指示参数是否为动态数据,则类型位图可以为111010,这里,1表示动态数据,0表示非动态数据。
通过该措施,编译嵌入式系统的固件文件的设备(目标设备或其它设备),可以在编译过程中基于嵌入式系统的代码中与日志数据相关的格式描述字符串,生成对应的类型位图,用于后续二进制流日志数据的输出。
在一实施例中,目标设备的上位机或其它设备可以扫描本地字典中的所有字符串,并基于扫描结果生成与每一字符串对应的类型位图。由于字典中记录嵌入式系统内与多种日志数据相关的字符串,通过扫描字典,可以获得与每一字符串对应的扫描结果。这里,扫描结果可以为字符串内各个占位符。基于扫描结果生成类型位图的具体措施参见前一实施例,在此不再赘述。
目标设备可以获取多个类型位图,并写入至本地的嵌入式系统。
通过该措施,可以基于字典生成各个与日志数据相关的格式描述字符串对应的类型位图,这些类型位图写入目标设备的嵌入式系统之后,可以用于后续二进制流日志数据的输出。
在一实施例中,对于一些无需关注具体内容的动态数据,可以通过设置类型位图的方式,使得在二进制流日志数据的输出过程中以非动态数据的形式输出,从而降低二进制流日志数据的数据量,进而降低了二进制流日志数据在传输过程中所占用的带宽资源。
用户可以通过下发位图编辑指令的方式,对类型位图中的至少一个参数的参数类型进行调整,从而更改参数类型。该位图编辑指令指示需要编辑参数类型的参数,以及待更新的参数类型。
目标设备可以响应于位图编辑指令,对位图编辑指令指示的类型位图进行调整,以更新类型位图内至少一个参数的参数类型。示例性的,类型位图指示对参数“computer_name”的参数类型为动态数据,然而,在实际应该场景中并不关注此项参数的具体内容,这种情况下,可以将类型位图中参数“computer_name”的参数类型更改为非动态数据,使得输出二进制流日志数据时仅为参数“computer_name”输出固定长度的内容(比如:0x1234解析可能是乱码)。
在一实施例中,目标设备或其它设备(比如,目标设备的上位机)在编译嵌入式系统的固件文件时,可以为多种日志数据相关的字符串生成字符串索引。示例性的,通过预设哈希算法对字符串进行计算,从而得到字符串索引。在获得每一字符串对应的字符串索引之后,可以建立字符串索引与字符串之间的映射关系,从而基于多个映射生成字典。这里,固件文件内可能存在相同字符串,此时,相同字符串可以对应唯一字符串索引,这可以保证字符串索引在目标设备内占用更少的内存资源。
将该字典传递至解析设备,可以使得解析设备在后续能够正确解析二进制流日志数据,获得日志信息。
本方案中,对于目标设备没有上位机的情况,在编译嵌入式系统的固件时,可以通过已生成的字典进一步生成类型位图,进而将类型位图放入data段一起进行二次链接,生成最终的嵌入式系统的固件。
对于目标设备存在上位机的情况,可以在嵌入式系统下载时,将嵌入式系统和类型位图一起下载至目标设备,进行初始化时刻的动态加载,使得目标设备搭载具有类型为题的嵌入式系统。或者,目标设备的嵌入式系统上类型位图可以在后期动态配置。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (11)
1.一种嵌入式系统的日志信息生成方法,其特征在于,包括:
目标设备基于预设参数名列表和所述参数名列表对应的类型位图,通过自身嵌入式系统的日志输出函数输出二进制流日志数据;其中,所述二进制流日志数据包括字符串索引和所述参数名列表对应的参数列表,所述类型位图指示所述参数列表中各个参数的参数类型,所述参数类型包括动态数据和非动态数据;
解析设备从所述二进制流日志数据中提取出所述字符串索引,并基于所述字符串索引在本地字典中查找对应的字符串;
所述解析设备基于所述字符串和所述参数列表,生成日志信息。
2.根据权利要求1所述的方法,其特征在于,所述目标设备基于预设参数名列表和所述参数名列表对应的类型位图,通过自身嵌入式系统的日志输出函数输出二进制流日志数据,包括:
在输出二进制流日志数据时,逐个读取所述参数名列表中的各个参数名,并在所述类型位图中确定该参数名对应参数的参数类型;
如果所述参数类型为动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数依次进行动态输出,直至输出完毕;
如果所述参数类型为非动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数以指定长度输出;
其中,所述参数名列表中所有参数名对应的输出结果构成所述二进制流日志数据的参数列表。
3.根据权利要求2所述的方法,其特征在于,所述非动态数据包括多种子类型,每一子类型对应一个指定长度;
所述如果所述参数类型为非动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数以指定长度输出,包括:
如果所述参数类型为非动态数据,依据所述参数名对应的栈数据,将所述参数名对应参数以其对应的子类型的指定长度进行输出。
4.根据权利要求1所述的方法,其特征在于,所述动态数据包括多种子类型;
所述解析设备基于所述字符串和所述参数列表,生成日志信息,包括:
所述解析设备基于所述字符串确定所述参数列表中各项参数的子类型,并分别依据各项参数的子类型对应解析方式,从所述参数列表中解析出各项参数;
所述解析设备依据所述字符串和解析出的各项参数,生成日志信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述目标设备的嵌入式系统,在运行过程中动态加载所述参数名列表对应的类型位图。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在编译所述嵌入式系统的固件文件时,扫描与多种日志数据相关的字符串,并基于扫描结果生成与每一种日志数据对应的类型位图,将生成的类型位图写入至所述嵌入式系统的固件文件。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
扫描本地字典中的所有字符串,并基于扫描结果生成与每一字符串对应的类型位图;
所述目标设备获取所述类型位图,并写入至所述嵌入式系统。
8.根据权利要求1至7任一所述的方法,其特征在于,所述方法还包括:
响应于位图编辑指令,对所述位图编辑指令指示的类型位图进行调整,以更新所述类型位图内至少一个参数的参数类型。
9.根据权利要求1或7所述的方法,其特征在于,所述方法还包括:
在编译所述嵌入式系统的固件文件时,为多种日志数据相关的字符串生成字符串索引,并基于所述字符串以及对应于所述字符串的字符串索引,生成字典;其中,所述固件文件内相同字符串对应唯一字符串索引;
将所述字典传递至所述解析设备。
10.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-9任意一项所述的应用于目标设备或解析设备的嵌入式系统的日志信息生成方法。
11.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成权利要求1-9任意一项所述的应用于目标设备或解析设备的嵌入式系统的日志信息生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410141321.7A CN117931763A (zh) | 2024-01-31 | 2024-01-31 | 嵌入式系统的日志信息生成方法及电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410141321.7A CN117931763A (zh) | 2024-01-31 | 2024-01-31 | 嵌入式系统的日志信息生成方法及电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117931763A true CN117931763A (zh) | 2024-04-26 |
Family
ID=90755771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410141321.7A Pending CN117931763A (zh) | 2024-01-31 | 2024-01-31 | 嵌入式系统的日志信息生成方法及电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931763A (zh) |
-
2024
- 2024-01-31 CN CN202410141321.7A patent/CN117931763A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002529849A (ja) | データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム | |
US11029924B2 (en) | Program optimization by converting code portions to directly reference internal data representations | |
CN115543294B (zh) | 一种Linux系统上动态链接库可视化依赖树的生成方法 | |
EP2645578A2 (en) | Method, system and apparatus for data compression and decomression | |
CN113448690B (zh) | 监测方法及装置 | |
CN111414339B (zh) | 一种文件的处理方法、系统、装置、设备及介质 | |
CN112632425A (zh) | 一种离线资源文件的生成方法、装置、设备及存储介质 | |
CN117931763A (zh) | 嵌入式系统的日志信息生成方法及电子设备、存储介质 | |
CN112346771A (zh) | 升级文件生成方法及装置 | |
US8108828B2 (en) | System for generating optimized computer data field conversion routines | |
CN114527984A (zh) | 一种着色器的生成方法、装置、播放器及存储介质 | |
CN110187897B (zh) | 一种固件升级方法及装置 | |
CN113721928A (zh) | 一种基于二进制分析的动态库裁剪方法 | |
US9720660B2 (en) | Binary interface instrumentation | |
CN112953721A (zh) | 一种ipa文件的解析方法、装置、设备及存储介质 | |
CN107229564B (zh) | 一种压力模拟方法及装置 | |
CN115796190B (zh) | 基于vue和webpack的前端国际化多语言转换方法及系统 | |
CN113094040B (zh) | 一种小程序编译方法和装置 | |
CN114091111B (zh) | 一种区块链智能合约的存储方法及装置 | |
CN110489178B (zh) | 软件状态信息的读写方法及装置、存储介质、终端 | |
CN116700739A (zh) | 差分升级方法、装置、电子设备及可读存储介质 | |
CN114003211A (zh) | 一种太阳码的生成及解析方法、装置、电子设备及介质 | |
CN114356289A (zh) | 一种基于多平台的着色器使用方法和相关设备 | |
CN116719570A (zh) | 数据加载方法及相关装置 | |
CN116756104A (zh) | Dbc文件更新比对方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |