掌桥专利:专业的专利平台
掌桥专利
首页

分析方法、分析装置、电子装置和存储介质

文献发布时间:2023-06-19 11:29:13


分析方法、分析装置、电子装置和存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种分析方法、分析装置、电子装置和存储介质。

背景技术

在操作系统运行过程中遇到的异常问题,往往可以通过对生成的异常日志进行分析来定位异常出现的位置。然而在现有技术中,对异常日志的分析大多以逐行搜索后给出罗列报告为主,逻辑处理相对笨重并且无法对产生异常的原因做进一步解析判定,给用户带来不便。

发明内容

本申请提供一种分析方法、分析装置、电子装置和存储介质。

本申请提供了一种异常日志的分析方法,包括:

获取系统异常时转储的异常日志中的进程信息;

将所述进程信息按预设类别分类并得到多个类别信息;、

分析预定的所述类别信息;

根据分析结果,记录异常的所述类别信息。

本申请提供了一种分析装置,所述分析装置包括:

获取模块,用于获取系统异常时转储的异常日志中的进程信息;

分类模块,用于将所述进程信息按预设类别分类并得到多个类别信息;

分析模块,用于分析预定的所述类别信息;

记录模块,用于根据分析结果,记录异常的所述类别信息。

本申请提供了一种电子装置,所述电子装置包导出括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于获取系统异常时的异常日志中的进程信息;及用于将所述进程信息按预设类别分类并得到多个类别信息;及用于分析预定的所述类别信息;以及用于根据分析结果,记录异常的所述类别信息。

本申请实施方式的分析方法、分析装置和电子装置中,在获取操作系统转储的异常日志中的进程信息后,对其进行分类整理得到预设的多个类别信息,然后根据异常问题分析预定的类别信息,并且由分析结果记录异常的类别信息。另外,本申请实施方式的分析方法中,还可以进一步解析判定出导致系统异常的原因,并将异常原因和其相关联的类别信息输出至控制台和以文件形式保存。如此,优化了对异常日志的分析逻辑,使得在系统异常时能够根据异常日志更加方便地进行逻辑推导和进一步解析判定异常原因。

在某些实施方式中,本申请实施方式提供了一种存储有计算机程序的非易失性计算机可读存储介质,当计算机程序被一个或多个处理器执行时,实现以上实施方式的分析方法。

本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:

图1是本申请实施方式的分析方法的流程示意图;

图2是本申请实施方式的分析装置的模块示意图;

图3是本申请实施方式的电子装置的平面示意图;

图4是本申请实施方式的分析方法的流程示意图

图5是本申请实施方式的分析方法的流程示意图;

图6是本申请实施方式的分析方法的流程示意图;

图7是本申请实施方式的输出结果示意图;

图8是本申请实施方式的分析方法的流程示意图。

主要元件及符号说明:

电子装置100、存储器11、处理器12、控制台13、分析装置200、获取模块21、分类模块22、分析模块23、记录模块24、输出模块25。

具体实施方式

下面详细描述本申请的实施方式,实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。

下文的公开提供了许多不同的实施方式或例子用来实现本申请的不同结构。为了简化本申请的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本申请。此外,本申请可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本申请提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。

请参阅图1,本申请实施方式提供了一种用于电子装置100(如图3所示)的分析方法,分析方法包括:

步骤S10:获取系统异常时转储的异常日志中的进程信息;

步骤S20:将进程信息按预设类别分类并得到多个类别信息;

步骤S30:分析预定的类别信息;

步骤S40:根据分析结果,记录异常的类别信息。

请参阅图2,本申请实施方式提供了一种分析装置200,分析装置200包括获取模块21、分类模块22、分析模块23和记录模块24。本申请实施方式的分析方法可以由本申请实施方式的分析装置200实现。例如,步骤S10可由分析装置200的获取模块21实现,步骤S20可由分析装置200的分类模块22实现,步骤S30可由分析装置200的分析模块23实现,步骤S40可由分析装置200的记录模块24实现。

或者说,获取模块21用于获取系统异常时转储的异常日志中的进程信息;分类模块22用于将进程信息按预设类别分类并得到多个类别信息;分析模块23用于分析预定的类别信息;记录模块24用于根据分析结果,记录异常的类别信息。

请参阅图3,本申请实施方式还提供了一种电子装置100,电子装置100包括存储器11与处理器12。存储器11用于存储计算机程序;处理器12用于获取系统异常时转储的异常日志中的进程信息;及用于将进程信息按预设类别分类并得到多个类别信息;及用于分析预定的类别信息;以及用于根据分析结果,记录异常的类别信息。

具体地,本申请实施方式中的电子设备100可以以多种形式存在,例如个人计算机设备,这类设备具备计算和处理功能,包括台式计算机、笔记本电脑等;又例如物理服务器这类提供计算服务的设备,这类设备的架构与通用的计算机架构类似,但是在处理能力、稳定性、可靠性等方面要求较高。

可以容易理解,本申请并不对电子设备100的具体形式做限制,只要具有存储器11用于存储计算机程序,并且还具有处理器12可以执行存储的计算机程序用以实现本分析方法即可。

在步骤S10中,异常日志可以为Backtrace文件,这类文件通常是在安卓系统发生ANR(Application Not Responding,应用程序未响应)或者SWT(Software WatchdogTimeout,软件看门狗超时)异常时经系统转储得到的。其中转储解释为:由于程序在运行时,在内存、CPU、I/O设备上的数据为动态易失的,当需要进行调试程序等收集信息的操作时,需要将动态数据转存为静态(如文件)的形式。

进一步地,ANR问题一般是在安卓系统的应用层和框架层发生的异常,用户访问应用程序时会弹出应用程序未响应等提示框;当发生SWT异常时,即看门狗定时器超时前未对其进行软件复位时,会导致系统重启。需要了解的是,软件看门狗主要用于监控SystemServer这一核心进程里的重要服务和核心线程是否卡住,其每30秒检测一次监控对象是否死锁,如果检测到死锁则生成异常日志并再检测一轮,如果仍然死锁,则再一次生成异常日志并让系统自动复位,如果未死锁,则定时器重新计时。

由上文,Backtrace文件中含有导致ANR或SWT问题产生的相关进程的具体进程信息,例如包含了进程的各个线程的执行情况,并且当异常涉及到不止一个进程时,则包含多个相关联的进程的进程信息。

为了抓取到系统发生ANR或SWT问题时的异常日志以对其做进一步分析,用户可以将出现问题的电子设备(例如采用安卓操作系统的智能手机、平板电脑等)通过数据线与电子装置100连接,在电子设备中打开开发者选项,然后通过在电子装置100上的控制台上键入相关命令提示符,配合一些调试工具包抓取到问题复现时系统转储的异常日志。进一步地,便可以再通过处理器12执行本分析方法获取到转储的异常日志中的进程信息,以对产生异常的原因做进一步解析。

在步骤S20中,在从异常日志中获取到与异常问题相关的进程信息后,由于相关进程信息涉及到的具体数据在异常日志中分布较为零散,并且本身也较为冗长,那么为了便于通过进程信息对异常原因做进一步明晰的判定,可以先对进程信息按照预设好的类别进行分类,以得到多个相关联的类别信息。

例如,可以将发生SWT等问题时系统转储的Backtrace文件中的进程信息格式化分类后存储到结构关联容器(例如程序设计中的“类”、“结构体”)中,那么一个类别信息即代表的是结构关联容器中的一个对象,或者说结构体成员。其中,可以将进程信息下的数据按照进程号、进程名、时间戳、Binder数、WaitingBinder数以及进程下的线程消息等类别进行分类,而线程消息下的数据又可以具体按照所属进程号、线程名。线程号、全局线程ID、线程状态、Native状态、schedstat、utm(线程用户态下使用的时间值)、stm(内核态下调度时间值)、core(最后执行某线程的cpu核的序号)、Native栈、持锁、等锁、Java栈等类别进行分类。

可以容易理解,进程信息这一类别信息分类下以及相关线程消息类别分类下的一系列类别信息都可以直接从Backtrace文件中获取到。另外,结构关联容器还可以存有通过分析进程信息所得到的类别消息,例如进程数量与Blocked消息等类别消息。这样,在分类整理完后,便将Backtrace文件中涉及到的进程信息与线程信息关联起来,以便后续进行逻辑推导从而解析判定异常原因。

在步骤S30中,可以理解的是,虽然引起ANR或SWT等异常问题的原因较多,但在编写计算机程序进行解析原因时,其分析流程是大致相同的,例如在一个实施例中,可以是通过分析某些字段,来判定是否有对应异常,那么此时在排查各类原因时抓取的用于分析的字段将会不同。因此,在上述场景下,步骤S30中预定的类别信息所指的可以是用于分析异常的不同字段,也即是说,不同类别信息在本分析方法中可以指代不同字段,而预设的类别信息则可以指代用于分析的字段。

其中,具体预设分析哪一类类别信息,可以由用户在编写计算机程序的过程中,依据待判断的不同异常原因而设定,也就是说,预定的类别信息根据用户所要排查的异常不同而变动。还需要说明的是,在排查较为复杂的异常时,往往不仅只分析一个字段,而是需要进行联合判断才能给出异常原因,那么在预定的类别信息满足进入后续分析的判断条件时,可以新增多个预定的类别信息以进行下一步分析。

在步骤S40中,可以根据步骤S30中得到的分析预定的类别信息的结果,给出导致异常问题(ANR或者SWT)发生的原因,并将与发生异常问题相关的类别信息标记为异常的类别信息后进行记录。这样便于后续对异常的类别信息进行处理,例如输出异常原因和异常的类别信息,以便向用户直观地呈现对异常问题的解析判定,并且也便于用户后续通过输出的结果以结合相关代码来解决异常问题。

其中,记录异常的类别信息的方式可以是:依据类别的不同将各个类别信息分类记录在另外设置的结构容器中。例如,用户在编写计算机程序时可以设置一个类,用于存放分析ANR或SWT等异常问题所得到的分析结果。这个类中可以包括结果类型,即异常原因,以及与异常原因相关的异常进程名、进程号、异常线程组(其中包含各种异常线程的线程消息)等异常的类别信息,可以容易理解,其中异常原因由步骤S30中分析得出,其余的类别信息可以从异常日志中提取出。

在一个实施例中,将异常日志进行格式化整理后,可以通过提取不同的类别信息作为预定的类别信息加以分析,例如先分析是否存在binder异常,若无异常,则进一步判断是否存在死锁,当不存在死锁问题时,获取对应进程最终持锁线程再进行卡死判断、系统卡顿判断等操作,并且在每一个判断步骤中,如果确认发生该类异常,则对发生异常的类别信息加以记录并输出。

本申请实施方式的分析方法、分析装置200、电子装置100中,可以在通过获取操作系统转储的异常日志中的进程信息后,对其进行分类整理以得到预设的多个类别信息;然后根据异常问题进一步分析预定的类别信息,并且由分析结果对异常的类别信息加以记录。如此,通过将异常日志中获取到的进程信息进行格式化分类后再分析这一方式,能够优化对异常日志的分析逻辑,以使得在通过异常日志分析异常原因时,可以根据预设类别整理出的多个类别信息,方便地进行逻辑推导和解析判定。

请参阅图4,在某些实施方式中,分析预定的类别信息(步骤S30),包括:

步骤S31:分析单个预定的类别信息;

或者步骤S32:分析单个预定的类别信息和与单个预定的类别信息相关联的类别信息。

在某些实施方式中,步骤S31和S32可以由分析模块24来实现。也即是说,分析模块24用于分析单个预定的类别信息,或者用于分析单个预定的类别信息和与单个预定的类别信息相关联的类别信息。

在某些实施方式中,步骤S31和S32可以由处理器12实现。也即是说,处理器12用于分析单个预定的类别信息,或者用于分析单个预定的类别信息和与单个预定的类别信息相关联的类别信息。

具体地,在一个场景中,当在多线程环境下,存在有多个线程并发访问临界资源的场景,在程序编写时往往有可能使用到锁,在使用锁时如果有使用不当的情况,会导致死锁现象,此时表现为用户在访问应用程序时相应界面会发生卡死现象。

在一个实施例中,当死锁现象仅是由单个线程异常所引起时,例如,当某一线程在某一时刻持锁后而出于某种异常原因未释放,那么可以经由步骤S31进行处理。也就是说,在本分析方法的分析过程中,在这类情况下,仅通过分析单个预定的类别信息即可得出异常原因。

或者,当死锁现象表现为互锁时,则涉及到多个线程异常。互锁即两个或两个以上的线程互相持有对方所需要的资源,导致这些线程均处于等待状态,无法执行。例如,线程1锁住了资源A,然后尝试对资源B进行加锁,但同时线程2已经锁住了资源B,并尝试去对资源A进行加锁,这时表现为互锁。互锁现象会导致线程永远处于阻塞等待状态。在这类情况下,则需要经由步骤S32进行处理,即在分析单个预定的类别信息时,发现在预定的类别信息下,与其相关联的一个或多个类别信息也存在异常,则下一步分析与其关联的类别信息。

可以容易理解,在上文所述的两种情况下,预定的类别信息和与预定的类别信息相关联的类别信息均可以指线程消息。当然,在排查其他异常时,预定的类别信息可以不同。

请参阅图5,在某些实施方式中,分析方法还包括:

步骤S50:输出异常的类别信息和异常原因。

在某些实施方式中,分析装置200还包括有输出模块25。那么步骤S50可以由输出模块25来实现,也即是说,输出模块25用于输出异常的类别信息和异常原因。

在某些实施方式中,处理器12用于输出异常的类别信息和异常原因。

具体地,在步骤S50中,为了直观地显示本分析方法的执行结果,可以将经由步骤S10-S40处理的异常日志的处理结果进行输出展示。如上文提及的,分析得出的异常原因以及记录的与异常原因相关的类别信息被保存到另外设置的结构容器中,那么输出时,可以通过判断结构容器中是否有数据存入,若有,则处理器12控制输出异常的类别信息。

请参阅图6,在某些实施方式中,输出异常的类别信息(步骤S50),包括:

步骤S51:输出异常的类别信息和异常原因至控制台13。

在某些实施方式中,步骤S51可以由输出模块25来实现。也即是说,输出模块25用于输出异常的类别信息和异常原因至控制台13。

在某些实施方式中,处理器12用于输出异常的类别信息和异常原因至控制台13。

具体地,在步骤S51中,在运用本分析方法完成对异常日志的分析后,可以将异常原因及异常的类别信息输出至Windows下的控制台13。例如,如图7所示,可以是首行输出为异常原因,然后输出发生异常的相关进程信息,例如进程名、进程号、时间戳,最后输出异常进程中的相应的异常线程信息。

这样,可以直观地让用户知晓发生ANR、SWT等异常问题时,具体的异常原因,并且由于还输出了异常线程的相关调用栈信息,可以方便用户根据调用栈信息结合具体应用程序代码去解决对应异常问题。

请参阅图8,在某些实施方式中,输出异常的类别信息(步骤S50),包括:

步骤S52:以文本文件格式保存异常的类别信息和异常原因。

在某些实施方式中,步骤S52可以由输出模块25实现。也即是说,输出模块25用于以文本文件格式保存异常的类别信息和异常原因。

在某些实施方式中,处理器12用于以文本文件格式保存异常的类别信息和异常原因。

具体地,当输出至控制台13的信息较多时,即引起异常的原因为多个线程引发,此时会给出多个线程的调用栈信息,那么将不便于在控制台13上对输出的信息进行后续分析处理,并且还需要考虑到电子装置100如果发生宕机引起数据丢失等问题。

那么考虑到上述情况,在本分析方法的步骤S52中,可以对输出的信息另以文本文件格式(例如TXT格式)保存起来以便后续分析处理。并且为了便于查阅文件,可以选择将文本文件的输出路径与电子装置100中存放异常日志的路径设置一致。

在某些实施方式中,本申请实施方式中的分析方法可以拓展到:将每一次使用本分析方法分析异常原因的流程解构为输入方式,填入类似json等易于被机器解析和生成的数据交换格式中,以作为机器学习的数据源。

或者,还可以将实现本分析方法的软件工具与现有的仅做搜索罗列工作的软件工具结合使用,例如,在现有的软件工具根据异常日志罗列出多项ANR异常后,再使用本方法对每一项ANR异常转储的出来的具体异常日志进行后续解析判定,这样便能够实现搜索及分析的一键式自动化。

本申请实施方式提供了一种存储有计算机程序的非易失性计算机可读存储介质,当计算机程序被一个或多个处理器12执行时,使得处理器12执行以上任一实施方式的分析方法。

具体地,运行写有本分析方法的计算机程序的方式可以是:编写bat脚本用于进行安装计算机程序、拷贝计算机程序至指定目录、修改注册表中的右键信息和传导右键路径参数等操作。这样便可以通过右键单击保存在电子装置100上的异常日志,以执行添加的自定义的Command命令,进而分析异常日志。

并且可以容易理解,当计算机程序被一个或多个处理器12执行时,处理器12可以执行以下步骤:

步骤S10:获取系统异常时转储的异常日志中的进程信息;

步骤S20:将进程信息按预设类别分类并得到多个类别信息;

步骤S30:分析预定的类别信息;

步骤S40:根据分析结果,记录异常的类别信息;

步骤S50:输出异常的类别信息。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。计算机程序可存储于一非易失性计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。

在本说明书的描述中,参考术语“一个实施方式”、“某些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。

尽管已经示出和描述了本申请的实施方式,本领域的普通技术人员可以理解:在不脱离本申请的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本申请的范围由权利要求及其等同物限定。

相关技术
  • 分析方法、分析装置、电子装置和存储介质
  • 一种图像分析方法、装置、存储介质及电子装置
技术分类

06120112942046