CN117093630A - 一种车载系统异常日志动态输出方法 - Google Patents
一种车载系统异常日志动态输出方法 Download PDFInfo
- Publication number
- CN117093630A CN117093630A CN202311342809.8A CN202311342809A CN117093630A CN 117093630 A CN117093630 A CN 117093630A CN 202311342809 A CN202311342809 A CN 202311342809A CN 117093630 A CN117093630 A CN 117093630A
- Authority
- CN
- China
- Prior art keywords
- log
- output
- level
- logs
- abnormality
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000002159 abnormal effect Effects 0.000 title claims abstract description 25
- 238000004458 analytical method Methods 0.000 claims abstract description 31
- 230000005856 abnormality Effects 0.000 claims description 30
- 230000006870 function Effects 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 239000003550 marker Substances 0.000 description 4
- 238000007639 printing Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005469 granulation Methods 0.000 description 1
- 230000003179 granulation Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013021 overheating Methods 0.000 description 1
- 230000010287 polarization Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
- G06F11/3072—Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种车载系统异常日志动态输出方法,其可以更精准更有针对性的输出日志信息。其将异常进行分级,在系统运行中实时监测系统中发生的异常,判断异常的级别,对不同级别的异常输出不同类型的分析用日志,实现了日志的动态输出。
Description
技术领域
本发明涉及日志输出控制技术领域,具体为一种车载系统异常日志动态输出方法。
背景技术
随着新能源汽车电子技术的飞速发展,智能座舱系统作为新能源汽车离用户最近的系统,一直也是国内主机厂以及OEM投入研发的重要领域。智能座舱系统中,包括:驾驶信息及娱乐主机(Display Head Unit,DHU)、辅助域控制器驾驶辅助控制器(DriverAssistant Controller,DAC)、驾驶信息及娱乐主机(DisplayHead Unit,DHU)、辅助引导加载程序(Secondary Bootloader,SBL)、嵌入式系统的引导加载程序(UniversalBootLoader,UBOOT)、车身网关模块(vehicle gateway module, vgm),以及内核(Kernel)等等模块。智能车辆运行时,所有的模块之间进行着非常复杂的数据通信。目前技术中,在智能座舱发生问题时,系统日志(log)毫无疑问是分析和定位问题最重要的信息。
目前的问题定位和分析技术方案中控制日志输出有两种常见的方式。
方式1,对日志分级,如软件交付后的user版本日志和给开发人员用的debug版本日志。不同级别日志在不同版本,编译时候就已经确定,无法动态改变。版本交付之后,用户在使用中遇到系统异常,基于user版本日志打印不充分,研发人员需要花费大量时间在debug版本上重现异常,导致修正时间延长。
方式2,根据系统性能来动态控制日志的输出。为了改善user版的log不足问题,在确保日志输出不会影响系统正常性能的基础上,平衡日志和其他功能的资源分配,系统负载高的时候将日志输出量减少,系统负载低时将日志输出量增大。具体可以参照申请号为201410053917. 8和201980070494 .1所示的专利内容。
但是,一般而言,异常或者问题(bug)的出现是具有局部性的。比如说时间局部性和空间局部性。Bug往往会出现在某一个进程中(空间局部性),技术人员只要重点分析出现异常附近时间点(时间局部性)的日志就能很快找到问题原因。因此,异常时间点附近日志就显得很重要了,而且希望,出现异常时候,至少是局部区域位置的日志尽可能多。
然而现有的两种日志输出方式中,日志分级的弊端是不能动态控制,交付后的user版的log信息经常不足。而根据系统性能控制日志输出的方式,则会出现日志输出两极化,要不负载高的时候日志很少,要不负载低的时候日志很多。这两种方式都不能确保提供充分的有用log信息给开发人员,不利于开发人员对异常问题的进一步分析。
发明内容
为了解决现有的两种log输出方式都不能确保提供充分的有用的log信息给开发人员的问题,本发明提供一种车载系统异常日志动态输出方法,其可以更精准更有针对性的输出日志信息。
本发明的技术方案是这样的:一种车载系统异常日志动态输出方法,其特征在于,其包括以下步骤:
S1:将系统中产生的异常根据严重程度进行分级,具体包括:A级、B级和C级;
A级:直接影响功能的异常,导致用户无法使用异常发生的功能或者系统;
B级:导致系统响应变慢的异常;
C级:上述以外的,并不影响用户使用功能的错误输出和告警;
S2:实时监测系统中产生的异常;
每发生一个异常,则记作:待处理异常;
S3:确认所述待处理异常的级别;
当所述待处理异常为C级,则:执行步骤S4;
当所述待处理异常为B级,则:执行步骤S5;
当所述待处理异常为A级,则:执行步骤S6:
S4:执行C级异常的分析用日志的输出操作,具体包括以下步骤:
a1:监测获取当前正在发生异常的进程名,记作:待处理C级异常进程;
a2:将所述待处理C级异常进程下发生异常位置的callstack日志全部打开,并作为分析用日志输出;
S5:执行B级异常的分析用日志输出操作,具体包括以下步骤:
b1:开启ftrace子系统,并实时抓取进程运行时间片图;
b2:获取当前运行中的所有进程,按照进程对CPU的占用情况对所有的进程排序;
b3:获得CPU占用率最高和次高的所有进程名,记作:待分析B级进程;
b4:将所述待分析B级进程下的所有callstack日志全部打开,将输出的日志与所述进程运行时间片图一起作为分析用日志输出;
S6:执行A级异常的分析用日志输出操作,具体包括以下步骤:
c1:开启memdump子系统;
c2:dump当前系统内存,并将内存数据作为A级异常的分析日志输出。
其进一步特征在于:
步骤S2实施之前,需要实施以下步骤:
d1:车辆系统启动后按照当前的系统版本启动对应版本的常规日志;
d2:所述常规日志与所述分析用日志并行同时输出;
所述常规日志包括:user版和debug版。
本申请提供的一种车载系统异常日志动态输出方法,其将异常进行分级,在系统运行中实时监测系统中发生的异常,判断异常的级别,对不同级别的异常输出不同类型的分析用日志,实现了日志的动态输出;本方法将动态日志输出粒度更小,确保日志输出的更精准,有效地控制了待分析的日志信息量,同时确保输出的日志更有利于开发人员分析异常。
附图说明
图1为车载系统异常日志动态输出方法的流程图;
图2为进程运行时间片图的示例。
具体实施方式
如图1所示,本申请包括一种车载系统异常日志动态输出方法,其包括以下步骤。
系统异常可以分为两种情况:一种是硬件异常,另一种是软件异常。硬件异常是指由于计算机硬件设备出现故障或损坏导致的异常情况。例如,当内存模块损坏或不足时,系统可能无法正常读取或写入数据,导致程序崩溃或出现错误。另外,硬盘故障、电源问题、CPU过热等也都属于硬件异常的范畴。软件异常是指由于软件程序本身的错误或异常导致的异常情况。这可能包括编程错误、逻辑错误、算法错误、输入错误等。
S1:将系统中产生的异常根据严重程度进行分级,具体包括:A级、B级和C级;
A级:直接影响功能的异常,导致用户无法使用异常发生的功能或者系统;比如说冻屏(Freeze),重启(Reboot)。
B级:导致系统响应变慢的异常。通常,系统响应变得缓慢,一般是由于某进程长期占用cpu导致,或者线程设计不合理,处理耗时太高,导致主线程长时间得不到调度运行导致。
C级:上述以外的,并不影响用户使用功能的错误输出和告警。比如,还有一般性的错误输出,告警并不影响用户使用的异常,比如,车液晶显示屏出现白点、辉度不足、漏光等问题。
本方法中的异常日志动态输出方法可以独立使用,也可以与现有的常规日志同时使用。本实施例中,是与常规日志同时使用,作为常规日志的补充项目,所以步骤S2实施之前,需要实施以下步骤:
d1:车辆系统启动后按照当前的系统版本启动常规日志;
常规日志包括:user版和debug版;车辆系统启动后根据当前的版本以及应用场景,或者基于user版打印日志,或者基于debug版输出常规日志;
d2:常规日志与分析用日志并行同时输出。
S2:基于异常监测模块(MONITOR),实时监测系统中产生的异常;
每发生一个异常,则记作:待处理异常。
S3:确认待处理异常的级别;
当待处理异常为C级,则:执行步骤S4;
当待处理异常为B级,则:执行步骤S5;
当待处理异常为A级,则:执行步骤S6。
S4:执行C级异常的分析用日志的输出操作,具体包括以下步骤:
a1:监测获取当前正在发生异常的进程名,记作:待处理C级异常进程;
a2:将待处理C级异常进程下发生异常位置的callstack日志全部打开,并作为分析用日志输出。
S5:执行B级异常的分析用日志输出操作,具体包括以下步骤:
b1:开启ftrace子系统,并实时抓取进程运行时间片图;
b2:获取当前运行中的所有进程,按照进程对CPU的占用情况对所有的进程排序;
b3:获得CPU占用率最高和次高的所有的进程名,记作:待分析B级进程;
b4:将待分析B级进程下的所有callstack日志全部打开,将输出的日志与进程运行时间片图一起作为分析用日志输出。
S6:执行A级异常的分析用日志输出操作,具体包括以下步骤:
c1:开启memdump子系统;
c2:dump当前系统内存,并将内存数据作为A级异常的分析日志输出。
具体实现时,本方法只是定义需要输出的日志类型和内容,具体的所有的分析日志输出动作,通过调用系统中的日志输出模块实现。
Ftrace是Linux系统中直接内置在内核的跟踪程序,memdump子系统基于memdump函数实现,用于调试时dump一片内存区域的数据,可以dump出数据的内容以及可见字符,内容支持16进制,10进制,8进制,2进制显示。memdump子系统和ftrace子系统都是集成在智能座舱系统中的工具软件。系统控制器可以根据需要进行调用。
进程运行时间片图也叫ftrace运行视图,是ftrace子系统对当前系统运行时进程调度和时间片占用情况进行画像后生成的图像。如图2所示,为一个ftrace运行视图,从图中可以看到不同进程运行时间片情况,可以很直观地对卡顿、响应问题进行定位,确定长时间占用cpu的进程。所以,一旦发生了B级的异常,将当时的ftrace运行视图作为日志内容之一进行输出,对后续问题分析会非常有效。
如图2所示的ftrace运行视图中,可以看出进程cpu占用情况。ftrace工具支持通过两条标线来标定运行起止,体现在图2中,MarkerA中的数字即为起始标线对应的起始时间,MarkerB中的数字即为截止标线对应的截止时间,A,B Delta为自动计算时长,即:MarkerA和MarkerB的差值。如图2中的fork_rr_affinit_7535进程运行时间偏长,在分析问题时,接下来需要重点关注fork_rr_affinit_7535的执行情况,一般而言,需要进一步结合进程fork_rr_affinit_7535运行日志综合分析。所以,在B级异常的分析用日志中还包括CPU占用率最高和次高的所有的进程对应的所有callstack日志。一般情况下,导致系统运行缓慢的原因基本上是CPU占用率最高和次高的进程之一,或者几个进程同时作用的结果。所以,只需要将CPU占用率最高和次高的所有的进程的日志进行重点输出即可。确保技术人员能够获得足够的日志数据。
系统中如果发生A类异常,系统已经崩溃,这是最严重的一种异常。如系统crash,内存踩踏,空指针等均属于此种异常。A级异常发生时,为了尽可能的获得当时系统中的信息,则开启memdump子系统,对当前系统内存进行dump,然后memdump文件日志会保存在文件系统中,作为分析用日志输出。而当前系统内存中的数据全部保存后提供的信息,对A级异常的发生原因更具指向性。
分析异常时,通过解析工具可以对memdump文件类型的日志进行解析。从解析结果,可以得到异常发生相关的callstack,在一些特殊情况下,会对memdump进行反汇编从而获取函数更细节的调用关系,以助于问题的分析。
而C级异常是系统运行中数量最多的异常类型。比如:假设一个车载系统中运行有两个域,分别运行了android,rtos系统。在android系统中运行有若干进程,比如task1,task2....taskN。
本实施例以车载系统音乐播放的行为来举例说明:
Android运行有audioserver。Audioserver负责路由控制,并将音频数据发送给rtos系统,rtos打开pcm设备,配置dsp,打开功放。这样音乐就会播放出来。
假设,android运行过程中,发生pcm写数据异常,比如说pcm_write函数返回BUSY,此时,异常监测模块(MONITOR)获取异常点是audioserver进程发生C类异常,然后MONITOR会通知日志输出模块,将audioserver pcm_write所有callstack中的日志打开。并将rtos中的相关日志全部打开。
本申请通过异常监测、进程获取、进程callstack日志控制等技术手段,来自适应日志的输出和打印。对问题的分析提供更有价值的信息。相对传统技术方案,本技术方案日志输出更加优化和智能。就算负载很低,如果系统正常运行(无异常)情况下,本方法中分析用日志输出可以很低,甚至可以不输出,大大节约了系统资源,降低了系统功耗。而传统技术方案不管日志怎么分级,依据性能动态输出,但是日志的输出是不可避免的。
更有甚者,本技术方案通过去控制特定异常进程的日志来实现日志的动态输出,相当于传统技术方案(日志分级)颗粒化更小,更精准和高效。真正做到异常日志重点输出,正常无关的进程日志不输出或者少输出。最后,由于本技术方案控制的颗粒化更小,因此,日志也更少(但是更有针对性),相对传统技术方案方案分析问题时候的海量日志来说,分析问题的时候也会更高效。
上述技术方案描述过程中的举例,包括进程名的获取,异常类型的定义,以及控制日志输出的方式只是作为一种实施例,并不作为对本技术方案的限制,其他类似方案也属于本技术方案的变形。比如说获取进程名,可以通过getPid(),或者getTaskname()可以通过不同技术手段,但这不作为对本技术方案的限制。
Claims (3)
1.一种车载系统异常日志动态输出方法,其特征在于,其包括以下步骤:
S1:将系统中产生的异常根据严重程度进行分级,具体包括:A级、B级和C级;
A级:直接影响功能的异常,导致用户无法使用异常发生的功能或者系统;
B级:导致系统响应变慢的异常;
C级:上述以外的,并不影响用户使用功能的错误输出和告警;
S2:实时监测系统中产生的异常;
每发生一个异常,则记作:待处理异常;
S3:确认所述待处理异常的级别;
当所述待处理异常为C级,则:执行步骤S4;
当所述待处理异常为B级,则:执行步骤S5;
当所述待处理异常为A级,则:执行步骤S6:
S4:执行C级异常的分析用日志的输出操作,具体包括以下步骤:
a1:监测获取当前正在发生异常的进程名,记作:待处理C级异常进程;
a2:将所述待处理C级异常进程下发生异常位置的callstack日志全部打开,并作为分析用日志输出;
S5:执行B级异常的分析用日志输出操作,具体包括以下步骤:
b1:开启ftrace子系统,并实时抓取进程运行时间片图;
b2:获取当前运行中的所有进程,按照进程对CPU的占用情况对所有的进程排序;
b3:获得CPU占用率最高和次高的所有进程名,记作:待分析B级进程;
b4:将所述待分析B级进程下的所有callstack日志全部打开,将输出的日志与所述进程运行时间片图一起作为分析用日志输出;
S6:执行A级异常的分析用日志输出操作,具体包括以下步骤:
c1:开启memdump子系统;
c2:dump当前系统内存,并将内存数据作为A级异常的分析日志输出。
2.根据权利要求1所述一种车载系统异常日志动态输出方法,其特征在于:步骤S2实施之前,需要实施以下步骤:
d1:车辆系统启动后按照当前的系统版本启动对应版本的常规日志;
d2:所述常规日志与所述分析用日志并行同时输出。
3.根据权利要求2所述一种车载系统异常日志动态输出方法,其特征在于:所述常规日志包括:user版和debug版。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311342809.8A CN117093630B (zh) | 2023-10-17 | 2023-10-17 | 一种车载系统异常日志动态输出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311342809.8A CN117093630B (zh) | 2023-10-17 | 2023-10-17 | 一种车载系统异常日志动态输出方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117093630A true CN117093630A (zh) | 2023-11-21 |
CN117093630B CN117093630B (zh) | 2024-01-26 |
Family
ID=88775726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311342809.8A Active CN117093630B (zh) | 2023-10-17 | 2023-10-17 | 一种车载系统异常日志动态输出方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117093630B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156355A (zh) * | 2016-07-27 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 日志处理方法及装置 |
CN114968637A (zh) * | 2022-05-19 | 2022-08-30 | 苏州轻棹科技有限公司 | 一种自动驾驶异常分析系统 |
CN115934404A (zh) * | 2022-12-30 | 2023-04-07 | 龙芯中科(合肥)技术有限公司 | 应用程序的异常处理方法及设备 |
-
2023
- 2023-10-17 CN CN202311342809.8A patent/CN117093630B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156355A (zh) * | 2016-07-27 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 日志处理方法及装置 |
CN114968637A (zh) * | 2022-05-19 | 2022-08-30 | 苏州轻棹科技有限公司 | 一种自动驾驶异常分析系统 |
CN115934404A (zh) * | 2022-12-30 | 2023-04-07 | 龙芯中科(合肥)技术有限公司 | 应用程序的异常处理方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117093630B (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7000150B1 (en) | Platform for computer process monitoring | |
US8250412B2 (en) | Method and apparatus for monitoring and resetting a co-processor | |
EP2431876B1 (en) | Method and device for exception handling in embedded system | |
US7428663B2 (en) | Electronic device diagnostic methods and systems | |
KR101019209B1 (ko) | 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법 | |
US20110093748A1 (en) | Software Memory Leak Analysis Using Memory Isolation | |
US20120042215A1 (en) | Request processing system provided with multi-core processor | |
US20080126873A1 (en) | Resource efficient software tracing for problem diagnosis | |
US20030074604A1 (en) | Method and apparatus for kernel module testing | |
CN115292077A (zh) | 内核异常处理方法及系统 | |
CN110764962A (zh) | 日志处理方法和装置 | |
CN117093630B (zh) | 一种车载系统异常日志动态输出方法 | |
CN113377586A (zh) | 一种服务器自动化检测方法、装置及存储介质 | |
CN113377566A (zh) | 一种基于uefi的服务器启动方法、装置及存储介质 | |
US20030115382A1 (en) | Peripheral device testing system and a peripheral device testing method which can generally test whether or not a peripheral device is normally operated | |
US6141635A (en) | Method of diagnosing faults in an emulated computer system via a heterogeneous diagnostic program | |
CN112069202A (zh) | 基于追踪技术的sql性能分析方法、系统、设备及介质 | |
CN116483612B (zh) | 内存故障处理方法、装置、计算机设备和存储介质 | |
US11947420B2 (en) | Hardware memory error tolerant software system | |
CN118377642A (zh) | 一种异常捕获方法及装置 | |
CN112559052B (zh) | 一种指令集调用方法、装置、终端及存储介质 | |
US20040093537A1 (en) | System for determining computer program memory allocation and deallocation | |
CN118069241A (zh) | 一种用于并发java应用程序的管理系统及方法 | |
CN118035030A (zh) | 一种基于Uboot的操作系统故障监控方法 | |
JP2004213178A (ja) | 計算機システム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |