CN116662045A - 进程名称获取方法、终端设备及存储介质 - Google Patents

进程名称获取方法、终端设备及存储介质 Download PDF

Info

Publication number
CN116662045A
CN116662045A CN202211449312.1A CN202211449312A CN116662045A CN 116662045 A CN116662045 A CN 116662045A CN 202211449312 A CN202211449312 A CN 202211449312A CN 116662045 A CN116662045 A CN 116662045A
Authority
CN
China
Prior art keywords
name
character
character string
field
information
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
Application number
CN202211449312.1A
Other languages
English (en)
Other versions
CN116662045B (zh
Inventor
熊炫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211449312.1A priority Critical patent/CN116662045B/zh
Publication of CN116662045A publication Critical patent/CN116662045A/zh
Application granted granted Critical
Publication of CN116662045B publication Critical patent/CN116662045B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例提供一种进程名称获取方法、终端设备及存储介质,涉及应用程序管理领域。所述方法包括:若检测到应用进程发生崩溃,应用进程内的运行时模块获取崩溃信息和标识名称;运行时模块基于标识名称生成名称字符串,将名称字符串添加至崩溃信息中,并将崩溃信息发送至***进程;***进程从崩溃信息中识别出所述名称字符串,并根据所述名称字符串得到标识名称;若***进程根据所述应用进程的进程识别信息,查询不到应用进程的进程信息,***进程将所述标识名称作为应用进程的进程名称。本申请实施例能够有效确定发生崩溃的应用进程的进程名称。

Description

进程名称获取方法、终端设备及存储介质
技术领域
本申请涉及应用程序管理领域,尤其涉及一种进程名称获取方法、终端设备及存储介质。
背景技术
终端设备上安装的各种应用(Application,APP),可以为用户提供不同的服务。应用在运行时会创建一个或多个应用进程(Process),通过应用进程实现应用的功能。应用进程若发生崩溃(crash),会导致应用无法正常运行,甚至会因为应用所占内存与CPU,导致***卡顿,用户无法正常操作终端。可见,对崩溃的应用进程需及时反馈相关信息以便能够及时解决,然而,部分应用进程在发生崩溃后,***进程却无法获得相应的进程名称,导致难以及时排查并解决应用出现的问题,影响用户正常使用***或应用,用户体验较差。
发明内容
本申请实施例公开了一种进程名称获取方法、终端设备及存储介质,可以在***进程无法根据崩溃信息查询到应用进程的进程信息时,提供应用进程的进程名称,使得***进程生成的崩溃文件中记录的进程名称不为空。
本申请第一方面公开了一种进程名称获取方法,应用于终端设备,所述终端设备包括应用进程和***进程,所述应用进程中包括运行时模块,所述方法包括:
若检测到所述应用进程发生崩溃,所述运行时模块获取所述应用进程的崩溃信息和标识名称;所述运行时模块基于所述标识名称生成名称字符串,将所述名称字符串添加至所述崩溃信息中,并将所述崩溃信息发送至所述***进程;所述***进程从所述崩溃信息中识别出所述名称字符串,并根据所述名称字符串得到所述标识名称;若根据所述应用进程的进程识别信息,查询不到所述应用进程的进程信息,所述***进程将所述标识名称作为所述应用进程的进程名称。
上述方法,可以在运行时模块向***进程发送崩溃信息之前,在发送的崩溃信息中添加标识名称,以在***进程无法根据进程识别信息查询到应用信息时,可以将标识名称确定为该应用进程的进程名称,使得***进程生成的崩溃文件中记录的进程名称不为空。同时,在崩溃文件中添加标识名称,不会影响运行时模块原有的向***进程发送崩溃信息这一事项的实现,不会影响应用进程向***进程传递崩溃信息的正常流程。
在一些可选的实施方式中,所述运行时模块基于所述标识名称生成名称字符串,包括:
根据所述标识名称和预设的字符串构建规则,生成所述标识名称对应的名称字符串,其中,所述字符串构建规则包括采用预设字符对所述标识名称进行标记。
上述方法,通过字符串构建规则,可以提高根据标识名称生成名称字符串的一致性,方便后续***进程对名称字符串进行识别。
在一些可选的实施方式中,所述方法还包括:
所述***进程从所述崩溃信息中删除所述名称字符串。上述方法,***进程在接收到添加名称字符串的崩溃信息后,通过在识别出名称字符串后删除名称字符串,还原成原来的崩溃信息,避免对用户读取崩溃信息造成干扰。
在一些可选的实施方式中,所述崩溃信息为CrashInfo对象。
在一些可选的实施方式中,所述运行时模块将所述名称字符串添加至所述崩溃信息中包括:将所述名称字符串添加至所述CrashInfo对象中目标字段对应的字段内容中。上述方法,只需要查询所述崩溃信息中目标字段对应的字段内容,可以有效提升对名称字符串的查询效率,无需查询崩溃信息中所有字段对应的字段内容,从而减少***进程对添加了名称字符串的崩溃信息进行识别时的工作量。
在一些可选的实施方式中,所述运行时模块将所述名称字符串添加至所述CrashInfo对象中目标字段对应的字段内容中包括:将所述名称字符串添加至所述目标字段的原有字段内容之后。上述方法,只需要查询所述崩溃信息中目标字段对应的字段内容,可以有效提升对名称字符串的查询效率,无需查询崩溃信息中所有字段对应的字段内容,从而减少***进程对添加了名称字符串的崩溃信息进行识别时的工作量。
在一些可选的实施方式中,所述运行时模块将所述名称字符串添加至所述CrashInfo对象中目标字段对应的字段内容中包括:将所述名称字符串添加至所述目标字段对应的原有字段内容之前。上述方法,只需要查询所述崩溃信息中目标字段对应的字段内容,可以有效提升对名称字符串的查询效率,无需查询崩溃信息中所有字段对应的字段内容,从而减少***进程对添加了名称字符串的崩溃信息进行识别时的工作量。
在一些可选的实施方式中,所述***进程从所述崩溃信息中识别出所述名称字符串包括:按照所述字符串构建规则,从所述崩溃信息中识别出所述名称字符串。上述方法,根据所述字符串构建规则识别名称字符串,可以提高名称字符串的识别准确率。
在一些可选的实施方式中,所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记,所述按照所述字符串构建规则,从所述崩溃信息中识别出所述名称字符串,包括:从所述目标字段对应的字段内容的最后一个字段开始,按照从后往前的顺序,确定所述字段内容中是否存在所述第二字符;若存在所述第二字符,确定所述字段内容中所述第二字符之前的字段中,是否存在所述第一字符;若所述字段内容中所述第二字符之前的字段中存在所述第一字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间的字符组成的字符串,确定为所述名称字符串。
上述方法,在名称字符串添加的位置在所述目标字段对应的原有字段内容之后时,从所述目标字段对应的字段内容中最后一个字段开始,按照从后往前的方顺序进行查询,确定第二字符;根据确定的第二字符,往从后往前的顺序继续查询第一字符,可以减少将目标字段的原有的字段中的字段确定为第一字符或第二字符的情况发生,从而提高了确定名称字符串的准确率。
在一些可选的实施方式中,所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记,所述按照所述字符串构建规则,从所述崩溃信息中识别出所述名称字符串,包括:从所述目标字段开始,按照从前往后的顺序,确定所述字段内容中是否存在所述第一字符;若存在所述第一字符,确定所述字段内容中所述第一字符之后的字段中,是否存在所述第二字符;若所述字段内容中所述第一字符之后的字段中存在所述第二字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间的字符组成的字符串,确定为所述名称字符串。
上述方法,在名称字符串添加的位置在所述名称字符串在所述目标字段与所述目标字段对应的原有字段之间时,从所述目标字段开始,按照从前往后的顺序,进行查询,确定第一字符;根据确定的第一字符,往从前往后的顺序继续查询第二字符,可以减少将目标字段的原有的字段中的字段确定为第一字符或第二字符的情况发生,从而提高了确定名称字符串的准确率。
本申请第二方面公开了一种计算机可读存储介质,包括计算机指令,当所述计算机指令在终端设备上运行时,使得所述终端设备执行如第一方面所述的进程名称获取方法。
本申请第三方面公开了一种终端设备,所述终端设备包括处理器和存储器,所述存储器用于存储指令,所述处理器用于调用所述存储器中的指令,使得所述终端设备执行如第一方面所述的进程名称获取方法。
应当理解地,上述提供的第二方面所述的计算机可读存储介质,第三方面所述的终端设备,均与上述第一方面的方法对应,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
图1是一种应用进程崩溃处理方法的流程示意图。
图2是本申请实施例提供的一种进程名称获取方法的应用场景示意图。
图3是本申请实施例提供的一种应用进程与***进程基于binder进行通信的应用场景示意图。
图4是本申请实施例中提供的一种进程名称获取方法的流程示意图。
图5是本申请实施例中提供的一种进程名称获取方法的流程示意图。
图6是本申请实施例中提供的一种进程名称获取方法的流程示意图。
图7是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,“示例性”、“或者”、“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性”、“或者”、“例如”等词旨在以具体方式呈现相关概念。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请中的技术领域的技术人员通常理解的含义相同。本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。应理解,本申请中除非另有说明,“/”表示或的意思。例如,A/B可以表示A或B。本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B三种情况。“至少一个”是指一个或者多个。“多个”是指两个或多于两个。例如,a、b或c中的至少一个,可以表示:a,b,c,a和b,a和c,b和c,a、b和c七种情况。应当理解的是,本文的流程图中所示步骤的顺序可以改变,某些也可以省略。
终端设备上安装的各种应用(Application,APP),可以为用户提供不同的服务。应用在运行时会创建一个或多个应用进程(Process),通过应用进程实现应用的功能。应用进程若发生崩溃(crash),会导致应用无法正常运行,甚至会因为应用所占内存与CPU,导致***卡顿,用户无法正常操作终端。可见,对崩溃的应用进程需及时反馈相关信息以便能够及时解决,然而,部分应用进程在发生崩溃后,***进程却无法获得相应的进程名称,导致难以及时排查并解决应用出现的问题,影响用户正常使用***或应用,用户体验较差。
应用进程的生命周期过程是通过***进程进行调度的,所以在应用进程发生崩溃后,会发送崩溃信息给***进程,以使***进程根据崩溃信息生成该应用进程的崩溃文件。***进程会根据进程识别信息,查询应用进程的进程信息。当一应用进程发生崩溃后,应用进程会发送进程识别信息给***进程,以使***进程根据进程识别信息,查询应用进程的进程信息。由于进程信息中记载了进程的名字,根据进程信息可以得到应用进程的进程名称。
然而,有时候***进程根据进程识别信息,查询不到应用进程的进程信息。若无法查询到进程信息,就无法得到应用进程的进程名称,导致***进程生成的崩溃文件中记录的进程名称为空,如unknown。由于崩溃文件中记录的进程名称为空,所以用户无法根据崩溃文件确定崩溃的应用进程的身份,也就无法对该应用进程进行处理,导致难以及时排查并解决应用出现的问题,影响用户正常使用***或应用,用户体验较差。
图1为一种应用进程崩溃处理方法的流程示意图。如图1所示,应用进程崩溃后,调用***接口,向***进程发送崩溃信息。***进程根据接收到的进程识别信息查询应用进程的进程信息。若***进程查询到进程信息,根据进程信息,记录进程名称;若***进程查询不到进程信息,记录进程名称为unknown,导致生成的崩溃文件中应用进程的进程名称为unknown,相当于崩溃文件中记录的进程名称为空,用户无法根据崩溃文件确定崩溃的应用进程的身份。
为了解决如下技术问题:***进程根据崩溃信息查询不到应用进程的进程信息,无法得到应用进程的进程名称,导致生成的崩溃文件中记录的进程名称为空,本申请实施例提供了一种进程名称获取方法,可以在应用进程向***进程发送崩溃信息之前,在崩溃信息中添加标识名称,以在***进程无法根据崩溃信息查询到应用信息时,可以将标识名称确定为该应用进程的进程名称,使得***进程生成的崩溃文件中记录的进程名称不为空,并可有效定位发生崩溃的应用。
本申请实施例提供的进程名称获取方法,应用于终端设备。示例性的,本申请实施例中的终端设备可以是手机、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、人工智能(artificialintelligence,AI)设备、可穿戴式设备、车载设备、智能家居设备和/或智慧城市设备等终端设备。本申请实施例对该终端设备的具体形态不作特殊限制。终端设备上安装有操作***,操作***可以是Windows***、/>***和***中的一种***或者未示出的其他***,以下以操作***为/>***为例进行说明。***进程,例如system server进程是/>***中重要的进程,由Zygote进程fork生成,***中的主要的服务驻留在其中,如ActivityManagerService(简称AMS)、PackageManagerService(简称PMS)和WindowManagerService(简称WMS)等。通过***进程可以创建应用的应用进程。例如,当用户点击终端设备桌面程序显示的应用图标时,桌面程序对应的桌面进程会调用目标函数,如startActivity()函数,通过跨进程通信,发送信息给***进程。在***进程中,由AMS通过跨进程通信告知Zygote进程fork中一个子进程,即应用进程。应用中所有的应用进程的生命周期过程,如创建、终止等,都是通过***进程进行调度。
下面将结合附图对本申请实施例提供的进程名称获取方法进行举例描述。
图2为本申请实施例提供的一种进程名称获取方法的应用场景示意图。如图2所示,应用进程和***进程都包括用户空间(User Space)和内核空间(Kernel space)。进程内的用户空间和内核空间可以进行数据交互。由于每个进程拥有独立的用户空间,两个进程的用户空间之间是隔离的,所以两个进程之间无法直接通过用户空间进行通信,实现进程间的内核数据交互过程。应用进程和***进程之间可以通过共享内存、binder、socket、管道等跨进程通信的方式进行通信。本申请实施例以应用进程与***进程基于binder进行通信为例进行说明。
图3为本申请实施例提供的一种应用进程与***进程基于binder进行通信的应用场景示意图。如图3所示,应用进程和***进程是通过binder驱动,建立两者之间的通信。其中,应用进程和***进程分别通过***调用,如输入输出控制(input/output control,ioctl)接口,与binder驱动建立通信。应用进程与***进程既是发送方,又是接收方。应用进程持有***进程的binder引用和应用进程自身的binder实体。***进程持有应用进程的binder引用和***进程自身的binder实体。应用进程作为发送方时,通过应用进程自身的binder实体向***进程执行发送操作时,会向binder驱动发送请求,以请求把数据通过***进程的binder引用发送给***进程。binder驱动会利用内核空间共享的机制,处理应用进程的请求,以完成应用进程向***进程发送数据这一事项。
图4是本申请实施例中提供的一种进程名称获取方法的流程示意图。如图4所示,所述方法包括:
应用进程发生崩溃,执行201,应用进程在该应用进程的崩溃信息中附加标识名称。所述标识名称可以以字符串的形式加入崩溃信息中。
202,应用进程发送附加有标识名称的崩溃信息给***进程。应用进程可以通过调用***处理接口向***进程发送崩溃信息。
203,***进程对崩溃信息进行解析,解析出标识名称。
204,***进程根据进程识别信息,查询应用进程的进程信息。
205,***进程确定是否查询到进程信息。若***进程查询到进程信息,执行206,***进程根据进程信息,记录进程名称。
若***进程没有查询到进程信息,执行207,将解析出的标识名称作为进程名称,进行记录。
关于本申请实施例提供的进程名称获取方法的一些具体实施方式,可以参见下文针对图5的详细说明。
上述实施例提供的进程名称获取方法,可以在运行时模块向***进程发送崩溃信息之前,在发送的崩溃信息中添加标识名称,以在***进程无法根据进程识别信息查询到应用信息时,可以将标识名称确定为该应用进程的进程名称,使得***进程生成的崩溃文件中记录的进程名称不为空。
图5是本申请一实施例中提供的一种进程名称获取方法的流程示意图。根据不同的需求,该流程图中步骤的顺序可以改变,某些步骤可以省略。所述方法应用于终端设备,所述终端设备包括应用进程、***进程、所述应用进程包括运行时模块。如图5所示,所述方法具体包括如下流程。
应用进程发生崩溃时,应用进程中的运行时模块会对崩溃的应用进程进行检测。所述运行时模块是应用进程内的模块,用于对应用进程的崩溃事件进行检测。可以在创建应用进程时同时在应用进程内创建运行时模块。运行时模块检测到该应用进程崩溃后,可以通过binder驱动将该应用进程的崩溃信息发送至***进程。
若检测到应用进程的崩溃事件,运行时模块执行401,获取应用进程的标识名称。
所述标识名称可以用于表示该应用进程。用户可以根据标识名称确定应用进程的身份。运行时模块可以通过解析应用进程的上下文信息,得到标识名称。所述上下文信息包括应用进程的运行环境信息,可以包括应用进程的进程识别号(Process Identification,PID)、进程名字(Process Name),还可以包括应用进程的户标识符(user identifier,UID)等信息。标识名称包括应用进程的进程名字、应用进程的身份信息中的一项或多项。在本申请的一些实施例中,运行时模块通过解析应用进程的上下文信息,通常可以直接得到应用进程的进程名称,也有一定概率解析得到的未必是应用进程的名称,而是应用进程的其他相关身份信息。所述身份信息可以用于帮助用户确定应用进程的身份。在解析到应用进程的进程名称时,运行时模块将解析到的进程名称确定为标识名称。如若未能解析到应用进程的进程名称时,运行时模块将解析到的应用进程的身份信息作为标识名称。在本申请的一些实施例中,若运行时模块解析应用进程的上下文信息没有得到应用进程的进程名称,也没有得到应用进程的其他相关身份信息,可以将预设字段确定为标识名称。预设字段可以根据实际情况进行设置,如no name。
402,运行时模块根据所述标识名称生成名称字符串。
在本申请的一些实施例中,可以根据标识名称和预设的字符串构建规则,生成标识名称对应的名称字符串。所述字符串构建规则可用于根据标识名称生成名称字符串。所述字符串构建规则可以根据实际情况进行设置,可以包括采用预设字符对所述标识名称进行标记。例如,所述字符串构建规则可以包括采用第一字符与第二字符对所述标识名称进行标记。第一字符与第二字符对所述标识名称进行标记表示通过第一字符与第二字符可以快速定位查找到标识名称,例如,通过将标识名称放在第一字符与第二字符中间,即以“第一字符+标识名称+第二字符”的形式进行标记。其中,第一字符和第二字符是预先设置的一个或多个字符,如分隔符,可以是相同的字符也可以是不同的字符。将标识名称代入所述字符串构建规则中,即可得到名称字符串。例如,字符串构建规则为采用第一字符与第二字符对所述标识名称进行标记,其中,第一字符和第二字符是相同的字符,为“-pn-”,标识名称为“com.xxx.test”,将标识名称代入字符串构建规则,得到的名称字符串为“-pn-com.xxx.test-pn-”。
在本申请的一些实施例中,所述字符串构建规则可以包括采用第三字符对所述标识名称进行标记。其中,第三字符是预先设置的一个或多个字符。具体地,可以以“第三字符+标识名称”的形式或以“标识名称+第三字符”的形式,进行标记。例如,字符串构建规则为“第三字符+标识名称”,其中,第三字符为“-pn-”,标识名称为“com.xxx.test”,将标识名称代入字符串构建规则,得到的名称字符串为“-pn-com.xxx.test”。又如,字符串构建规则为“标识名称+第三字符”,其中,第三字符为“-pn-”,标识名称为“com.xxx.test”,将标识名称代入字符串构建规则,得到的名称字符串为“com.xxx.test-pn-”实际应用中可以对字符串构建规则进行灵活设置,不局限于上述举例。通过字符串构建规则,可以提高根据标识名称生成名称字符串的一致性,方便后续***进程对名称字符串进行识别。
403,运行时模块将所述名称字符串添加至所述应用进程的崩溃信息中。
所述应用进程的崩溃信息为运行时模块在应用进程崩溃时需要发送给***进程的信息,用于向***进程说明该应用进程的崩溃。所述应用进程的崩溃信息可以为CrashInfo对象。CrashInfo对象中封装了应用进程相关的Crash信息文件名,Crash异常类名称,方法名,Crash对应的代码行号以及异常信息等信息。
在本申请一实施例中,运行时模块可以将所述名称字符串添加至所述应用进程的崩溃信息中的任意一个位置。为了方便后续***进程读取崩溃信息中添加的名称字符串,在本申请的一些实施例中,可以在所述应用进程的崩溃信息中预先确定目标字段,将所述名称字符串添加至所述应用进程的崩溃信息中的目标字段所对应的字段内容内。例如,若应用进程的崩溃信息为CrashInfo对象,CrashInfo对象中包括多个字段。每个字段都有其对应的字段内容,字段内容用于对字段进行说明。可以在CrashInfo对象包括的多个字段中,将一字段确定为目标字段,将名称字符串添加至被确定为目标字段的字段对应的原有字段内容中。原有字段内容是指添加名称字符串前,目标字段对应的字段内容。可以填加到该字段对应的原有字段内容中的任意位置。可以将CrashInfo对象中的字段“CrashTag”,确定为目标字段;运行时模块将所述名称字符串添加至所述应用进程的崩溃信息中时,将所述名称字符串添加到字段“CrashTag”所对应的原有字段内容中。
为了避免影响目标字段对应的原有字段内容,可以将名称字符串添加到目标字段的原有字段内容的后面,或者可以将名称字符串添加到字段“CrashTag”对应的原有字段内容的前面。例如,目标字段“CrashTag”后面的原有字段内容为“native_crash”,名称字符串为“-pn-com.xxx.test-pn-”,将名称字符串添加到目标字段对应的原有字段内容之后,变为“native_crash-pn-com.xxx.test-pn-”。又如,目标字段“CrashTag”后面原有的字段为“native_crash”,名称字符串为“-pn-com.xxx.test-pn-”,将名称字符串添加到目标字段对应的原有字段内容之前,变为“-pn-com.xxx.test-pn-native_crash”。
404,运行时模块将添加名称字符串的崩溃信息发送至***进程。
在本申请实施例中,可以通过调用***处理接口将添加名称字符串的崩溃信息发送至***进程。
405,***进程对添加名称字符串的崩溃信息进行识别,识别出所述名称字符串。
所述名称字符串为运行时模块向崩溃信息中添加的名称字符串。
在本申请实施例中,若标识名称对应的名称字符串是根据标识名称和预设的字符串构建规则确定的,为了提高名称字符串的识别准确率,可以按照所述字符串构建规则对添加名称字符串的崩溃信息进行识别,以识别出崩溃信息中的名称字符串。可以将添加名称字符串的崩溃信息中符合字符串构建规则的字符串,确定为所述名称字符串。
例如,当一字符串构建规则采用第一字符与第二字符对所述标识名称进行标记,且使用“第一字符+标识名称+第二字符”的形式进行标记,其中第一字符和第二字符都为“-pn-”。在识别过程中,若识别到一个字符串中的第一个字符和最后一个字符都为“-pn-”,可以确定该字符串符合所述字符串构建规则,并确定该字符串为所述名称字符串。又如,当一字符串构建规则为“第三字符+标识名称”,其中第三字符为“-pn-”,当识别到一个由两个字符组成的字符串中的第一个字符为“-pn-”,可以确定该字符串符合所述字符串构建规则,确定该字符串为所述名称字符串。
为清楚完整地说明对崩溃信息的识别,下文提供了多个实施例,用于说明***进程对添加名称字符串的崩溃信息的多种识别方式,从而可有效确定名称字符串。
在第一实施例中,可以通过先确定第一字符,再根据第一字符的位置向后确定第二字符的方式确定所述名称字符串。若所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记,所述按照所述字符串构建规则对所述添加名称字符串的崩溃信息进行识别,得到名称字符串可以包括:确定所述添加名称字符串的崩溃信息中是否存在所述第一字符;若存在所述第一字符,确定所述第一字符后是否存在所述第二字符;若所述第一字符后存在所述第二字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间的字符组成的字符串,确定为所述名称字符串。
具体地,若崩溃信息中能够检索到第一字符,开始对第一字符后的字符进行字符检索,确定第一字符后是否存在第二字符。当在第一字符后查询到第二字符,就会停止该次的字符检索,直接将由第一字符、第二字符以及第一字符与第二字符之间的字符组成的字符串确定为名称字符串。
例如,第一字符为“-pn-”,第二字符为“-vn-”,若所述崩溃信息中存在字符串“-pn-”,即第一字符,确定第一字符之后是否存在第二字符“-vn-”。若存在第二字符“-vn-”,将“-pn-”、“-vn-”和“-pn-”与“-vn-”之间的字符组成的字符串确定为所述名称字符串。若“-pn-”与“-vn-”之间字符为“com.xxx.test”,将“-pn-com.xxx.test-vn-”确定为名称字符串。
上述第一实施例可以通过先确定第一字符,再根据第一字符的位置向后确定第二字符,可以提高确定第一字符和第二字符的准确率,从而提高确定名称字符串的准确率。
在第二实施例中,可以通过先确定第二字符,再根据第二字符的位置向前确定第一字符的方式,确定名称字符串。若所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记,所述按照所述字符串构建规则对所述添加名称字符串的崩溃信息进行识别,得到名称字符串可以包括:确定所述添加名称字符串的崩溃信息中是否存在第二字符;若存在第二字符,确定第二字符前是否存在第一字符;若第二字符前存在第一字符,将第一字符、第二字符和第一字符与第二字符之间的字符组成的字符串,确定为所述名称字符串。
具体地,若崩溃信息中能够检索到第二字符,开始对第二字符前的字符进行字符检索,确定第二字符前是否存在第一字符。当在第二字符后查询到第一字符,就会停止该次的字符检索,直接获取由第一字符、第二字符以及第一字符与第二字符之间的字符作为名称字符串。
第三实施例中,可以在运行时模块将名称字符串添加到所述应用进程的崩溃信息中的目标字段对应的原有字段内容内时,在目标字段对应的字段内容中,通过先确定第一字符,再根据第一字符的位置向后确定第二字符的方式,确定名称字符串。此处目标字段对应的字段内容为运行时模块添加名称字符串后,目标字段对应的字段内容,其中,包括运行时模块添加的名称字符串以及目标字段对应的原有字段内容。若所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记且运行时模块将所述名称字符串添加至所述应用进程的崩溃信息中的目标字段对应的原有字段内容内,所述按照所述字符串构建规则对所述添加名称字符串的崩溃信息进行识别,得到所述名称字符串可以包括:可以确定所述目标字段对应的字段内容中是否存在所述第一字符对应的第一字符;若存在所述第一字符,确定所述字段内容中所述第一字符之后的字段中,是否存在所述第二字符对应的第二字符;若存在所述第一字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间字符组成的字符串,确定为所述名称字符串。
例如,第一字符为“-pn-”,第二字符为“-vn-”,若所述崩溃信息中的目标字段为“CrashTag”,***进程在“CrashTag”对应的字段内容“native-pn-com.xxx.test-vn-_crash”内进行查询,确定是否存在“-pn-”,即确定是否存在第一字符。若字段内容“native-pn-com.xxx.test-vn-_crash”内存在第一字符“-pn-”,确定所述字段内容中第一字符“-pn-”之后的字段“com.xxx.test-vn-_crash”中,是否存在第二字符“-vn-”。若存在第二字符“-vn-”,将第一字符“-pn-”、第二字符“-vn-”和第一字符“-pn-”与第二字符“-vn-”之间的字符组成的字符串确定为所述名称字符串。若第一字符“-pn-”与第二字符“-vn-”之间字符为“com.xxx.test”,将字符串“-pn-com.xxx.test-vn-”确定为名称字符串。
通过上述第三实施例,只需要查询所述崩溃信息中目标字段对应的字段内容,可以有效提升对名称字符串的查询效率,无需查询崩溃信息中所有字段对应的字段内容,从而减少***进程对添加了名称字符串的崩溃信息进行识别时的工作量。
在第四实施例中,可以在运行时模块将名称字符串添加到所述应用进程的崩溃信息中的目标字段对应的原有字段内容内时,在目标字段对应的字段内容中,通过先确定第二字符,再根据第二字符的位置向前确定第一字符的方式,确定名称字符串。若所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记且运行时模块将所述名称字符串添加至所述应用进程的崩溃信息中的目标字段对应的字段内容内,所述按照所述字符串构建规则对所述添加名称字符串的崩溃信息进行识别,得到名称字符串可以包括:确定所述目标字段对应的字段内容中是否存在所述第二字符对应的第二字符;若存在所述第二字符,确定所述字段内容中所述第二字符之前的字段中,是否存在所述第一字符对应的第一字符;若存在所述第一字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间字符组成的字符串,确定为名称字符串。
例如,第一字符为“-pn-”,第二字符为“-vn-”,若所述崩溃信息中的目标字段为“CrashTag”,***进程在“CrashTag”对应的字段内容“native-pn-com.xxx.test-vn-_crash”内进行查询,确定是否存在“-vn-”,即确定是否存在第二字符。若字段内容“native-pn-com.xxx.test-vn-_crash”内存在第二字符“-vn-”,确定所述字段内容中第二字符“-vn-”之前的字段“native-pn-com.xxx.test”中,是否存在第一字符“-pn-”。若存在第一字符“-pn-”,将第一字符“-pn-”、第二字符“-vn-”和第一字符“-pn-”与第二字符“-vn-”之间的字符组成的字符串确定为所述名称字符串。若第一字符“-pn-”与第二字符“-vn-”之间字符为“com.xxx.test”,将字符串“-pn-com.xxx.test-vn-”确定为名称字符串。通过上述第四实施例,只需要查询所述崩溃信息中目标字段对应的字段内容,可以有效提升对名称字符串的查询效率,无需查询崩溃信息中所有字段对应的字段内容,从而减少***进程对添加了名称字符串的崩溃信息进行识别时的工作量。
在第五实施例中,可以在运行时模块将所述名称字符串添加至所述目标字段对应的原有字段内容之后时,从所述目标字段对应的字段内容的最后一个字段开始,按照从后往前的顺序,通过先确定第二字符,再根据第二字符的位置向前确定第一字符的方式,确定名称字符串。若所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记且运行时模块将所述名称字符串添加至所述目标字段对应的原有字段内容之后,所述按照所述字符串构建规则对所述添加名称字符串的崩溃信息进行识别,得到名称字符串可以包括:可以从所述目标字段对应的字段内容的最后一个字段开始,按照从后往前的顺序,确定所述字段内容中是否存在所述第二字符;若存在所述第二字符,确定所述字段内容中所述第二字符之前的字段中,是否存在所述第一字符;若所述字段内容中所述第二字符之前的字段中,存在所述第一字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间字符组成的字符串,确定为名称字符串。
运行时模块在所述应用进程的崩溃信息中添加所述名称字符串的位置可以是预先设置的,如添加至所述目标字段对应的原有字段之后、添加至所述目标字段与所述目标字段对应的原有字段之间。***进程可以直接获知运行时模块在所述应用进程的崩溃信息中添加所述名称字符串的位置。所述目标字段对应的字段内容包括所述目标字段对应的原有字段内容和名称字符串。
从后往前的顺序是指从最后一个字段开始,依次向前移动,直到往第一个字段的顺序。
例如,若目标字段为“CrashTag”,“CrashTag”后面的原有字段为“native_crash”,加在“CrashTag”后面的名称字符串为“-vn-com.xxx.test-pn-”,其中第一字符为“-vn-”、第二字符为“-pn-”,“-vn-com.xxx.test-pn-”添加至所述目标字段对应的原有字段之后,即添加在“native_crash”之后,则字段“CrashTag”对应的字段内容为“native_crash-vn-com.xxx.test-pn-”。从所述目标字段对应的字段内容的最后一个字段“-pn-”开始,按照从后往前的顺序,确定所述目标字段“CrashTag”后面是否存在所述第二字符“-pn-”;若存在所述第二字符“-pn-”,判断所述字段内容中所述第二字符之前的字段“native_crash-vn-com.xxx.test”中,是否存在所述第一字符“-vn-”;若存在所述第一字符“-vn-”,将所述第一字符“-vn-”、所述第二字符“-pn-”和所述第一字符“-vn-”与所述第二字符“-pn-”之间字符组成的字符串“-vn-com.xxx.test-pn-”,确定为名称字符串。
上述第五实施例,在名称字符串添加的位置在所述目标字段对应的原有字段内容之后时,从所述目标字段对应的字段内容中最后一个字段开始,按照从后往前的顺序进行查询,确定第二字符;根据确定的第二字符,往从后往前的顺序继续查询第一字符,可以减少将目标字段的原有的字段中的字段确定为第一字符或第二字符的情况发生,从而提高了确定名称字符串的准确率。
在第六实施例中,可以在运行时模块将所述名称字符串添加至所述目标字段对应的原有字段内容之前时,从所述目标字段对应的字段内容的第一个字段开始,按照从前往后的方向,通过先确定第一字符,再根据第一字符的位置向后确定第二字符的方式,确定名称字符串。若所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记且运行时模块将所述名称字符串添加至所述目标字段对应的原有字段内容之前,所述按照所述字符串构建规则对所述添加名称字符串的崩溃信息进行识别,得到名称字符串可以包括:从所述目标字段对应的字段内容的第一个字段开始,按照从前往后的方向,确定所述字段内容中是否存在所述第一字符;若存在所述第一字符,确定所述字段内容中所述第一字符之后的字段中,是否存在所述第二字符;若所述字段内容中所述第一字符之后的字段中,存在所述第二字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间字符组成的字符串,确定为所述名称字符串。
从前往后的顺序是指从第一个字段开始,依次向后移动,直到往最后一个字段的顺序。上述第六实施例,在名称字符串添加的位置在所述名称字符串在所述目标字段与所述目标字段对应的原有字段之间时,从所述目标字段开始,按照从前往后的顺序,进行查询,确定第一字符;根据确定的第一字符,往从前往后的顺序继续查询第二字符,可以减少将目标字段的原有的字段中的字段确定为第一字符或第二字符的情况发生,从而提高了确定名称字符串的准确率。
406,***进程根据所述名称字符串,得到标识名称。
所述标识名称为运行时模块获取到的标识名称。
在本申请的一些实施例中,若所述运行时模块根据标识名称和预设的字符串构建规则,生成标识名称对应的名称字符串,***进程可以根据所述字符串构建规则,在所述名称字符串中,确定标识名称。当字符串构建规则为“第一字符+标识名称+第二字符”,将所述名称字符串中第一字符与第二字符之间的字段,确定为标识名称。例如,第一字符和第二字符都为“-pn-”,名称字符串“-pn-com.xxx.test-pn-”,将字段“com.xxx.test”确定为标识名称。
407,***进程在所述添加名称字符串的崩溃信息中,删除所述名称字符串。
在本申请一实施例中,在***进程识别名称字符串后,删除所述名称字符串,还原所述应用进程的崩溃信息,即还原到未添加名称字符串之前的应用进程的崩溃信息。
通过上述实施例,由于***进程在识别出标识名称之后,删掉了名称字符串,所以应用进程添加名称字符串这一行为,避免在用户读取崩溃信息时对用户造成干扰。
408,***进程根据进程识别信息,确定是否可以查询到所述应用进程的进程信息。
由于***进程管理各应用进程并存储各应用进程的进程信息,当一应用进程发生崩溃后,运行时模块会发送该应用进程的进程识别信息给***进程,以使***进程根据进程识别信息,在存储的进程信息中查询应用进程的进程信息,确定所述应用进程的身份。所述进程识别信息中可以包括进程标识,根据进程标识可以查询到匹配的应用进程,并得到应用进程的进程信息。
若可以查询到所述应用进程的进程信息,执行409,根据所述进程信息确定所述应用进程的进程名称。
若查询不到所述应用进程的进程信息,执行410,将所述标识名称确定为所述应用进程的进程名称。
如若能够直接根据应用进程的进程识别信息,查询出应用进程的进程信息,***进程可直接根据进程信息确定相应的进程名称;如若无法根据应用进程的进程识别信息,查询出应用进程的进程信息,例如,进程名称为空时,可以通过上述步骤406中识别得到的标识名称作为所述应用进程的进程名称。
上述实施例提供的进程名称获取方法,可以在运行时模块向***进程发送崩溃信息之前,在发送的崩溃信息中添加标识名称,以在***进程无法根据进程识别信息查询到应用信息时,可以将标识名称确定为该应用进程的进程名称,使得***进程生成的崩溃文件中记录的进程名称不为空。同时,在崩溃文件中添加标识名称,不会影响运行时模块原有的向***进程发送崩溃信息这一事项的实现,不会影响应用进程向***进程传递崩溃信息的正常流程。其次,***进程在接收到添加名称字符串的崩溃信息后,也会识别出名称字符串,并在识别完成后删除名称字符串,还原成原来的崩溃信息,可以避免对用户读取崩溃信息造成干扰。
图6是本申请实施例提供的一种进程名称获取方法的流程示意图。如图6所示,所述方法包括:
当应用进行崩溃时,执行601,应用进程获取当前崩溃的应用进程的标识名称。
602,应用进程确定获取到的标识名称是否为空。
当应用进程获取到的标识名称为空时,说明应用进程没有获取到标识名称。当应用进程获取到的标识名称不为空时,说明应用进程获取到了标识名称。
当应用进程确定获取到的标识名称为空,直接调用***接口,将应用进程的崩溃信息发送给***进程。应用进程的崩溃信息发送给***进程后,执行604。
当应用进程确定获取到的标识名称不为空,执行603,在崩溃信息中目标字段的后面附加标识名称对应的字符串。
在本申请实施例中,所述标识名称对应的字符串是根据字符串构建规则构建的。在图6所示的实施例中,所述字符串构建规则为“第一字符+标识名称+第二字符”,其中第一字符和第二字符相同,为同一个分隔符,如“-pn-”。例如,第一字符和第二字符都为分隔符“-pn-”,标识名称为“com.xxx.test”,得到字符串为“-pn-com.xxx.test-pn-”。可以理解的是,在其他实施例中,字符串构建规则可以包括如图5所示实施例对应的多种规则。当字符串构建规则发送变化后,***进程对应用进程添加字符串的识别方法也会相应的发生改变。
在图6所示的实施例中,附加标识名称对应的字符串的位置为所述目标字段对应的原有字段之后。在别的一些实施例中,附加标识名称对应的字符串的位置可以为所述目标字段与所述目标字段对应的原有字段之间。随着附加标识名称对应的字符串的位置的改变,***进程对应用进程添加字符串的识别方法也会相应地发生改变,识别字符串的一些具体实施方式可以参见对图5中405的相关描述在此不再赘述。
附加字符串后,调用***接口,将附加字符串后的应用进程的崩溃信息发送给***进程。
可以理解的是,上述应用进程执行的步骤,实际上可以是应用进程中的运行时模块执行的。
604,***进程在应用进程发送的崩溃信息中,确定识别字段。
所述识别字段为应用进程发送的崩溃信息中,所述目标字段对应的字段内容。***进程可以根据目标字段,在应用进程发送的崩溃信息中,确定识别字段。例如,目标字段为“CrashTag”,***进程将应用进程发送的崩溃信息中“CrashTag”对应的字段内容“native_crash-pn-com.xxx.test-pn-”,确定为识别字段,如将“CrashTag”对应的字段内容“native_crash-pn-com.xxx.test-pn-”确定为识别字段。
605,确定识别字段中是否有字符串中的分隔符。
在本实施例中,字符串中包括两个相同的分隔符,可以判断识别字段中是否有字符串中的分隔符。
确定识别字段中没有字符串中的分隔符,说明应用进程并没有在崩溃信息中添加字符串,执行606,将预设字段确定为标识名称。预设字段可以根据实际情况进行设置,例如可以设置为no name。执行完606后,流程转至611,***进程根据进程识别信息查询应用进程的进程信息。
上述从606到611这一分支上的崩溃信息中,并没有添加字符串,所以不需要去掉字符串;而从603到611这一分支上的崩溃信息中,添加了字符串,所以需要在610中去除添加的字符串,还原原有的崩溃信息。
若确定识别字段中有字符串中的分隔符,执行607,将识别字段中最后一个的分隔符的位置记为P2。
由于所述名称字符串在所述目标字段对应的原有字段之后,为了避免将目标字段后原有的字段中的分隔符确定为字符串中的分隔符,所以需要从所述目标字段对应的字段内容中最后一个字段开始,往靠近所述目标字段的方向进行查询,所以将识别字段中最后一个的分隔符的位置记为P2。
608,从P2向前查找,确定是否存在另一分隔符。
从P2向前查找是指按照靠近目标字段的方向,进行字符查询。
若确定不存在另一分隔符,执行606。执行606后,执行611。
若确定存在另一分隔符,执行609,将该分隔符记为P1,并将P1和P2之间的字段,确定为标识名称。
611,***进程根据进程识别信息,查询应用进程的进程信息。
612,***进程确定是否查询到进程信息。
若***进程查询不到进程信息,执行613,将标识名称作为进程名称,进行记录。
若***进程查询到进程信息,执行614,根据进程信息,记录进程名称。
关于图6所示方法的一些具体实施方式,可以参见图5的相关说明,在此不再赘述。
上述实施例提供的进程名称获取方法,可以在运行时模块向***进程发送崩溃信息之前,在发送的崩溃信息中添加标识名称对应的字符串,以在***进程无法根据进程识别信息查询到应用信息时,可以将标识名称确定为该应用进程的进程名称,使得***进程生成的崩溃文件中记录的进程名称不为空。同时,在崩溃文件中添加标识名称对应的字符串,不会影响运行时模块原有的向***进程发送崩溃信息这一事项的实现,不会影响应用进程向***进程传递崩溃信息的正常流程。同时,***进程在接收到添加字符串的崩溃信息后,也会识别出名称字符串,并删除掉添加字符串的崩溃信息中的字符串,还原原来的崩溃信息,避免对用户读取崩溃信息造成干扰。而且,在识别不到标识名称的时候,可以将预设字段确定为标识名称,使得***进程无法根据进程识别信息查询到应用信息时,可以将预设字段确定为该应用进程的进程名称。
图7为本申请实施例提供的一种终端设备100的结构示意图。参考图7,终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserial bus,USB)接口130,充电管理模块120,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对终端设备100的具体限定。在本申请另一些实施例中,终端设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I1C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
I1C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。I2S接口可以用于音频通信。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等***器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现终端设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现终端设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I1C接口,I2S接口,UART接口,MIPI接口等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端设备100充电,也可以用于终端设备100与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端设备100,例如AR设备等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备100的结构限定。在本申请另一些实施例中,终端设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。
终端设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。
移动通信模块150可以提供应用在终端设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
无线通信模块160可以提供应用在终端设备100上的包括无线局域网(wirelesslocal area networks,WLAN),蓝牙(bluetooth,BT),全球导航卫星***(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
终端设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为服务异常提醒的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。
在一些实施例中,终端设备100可以包括1个或N个显示屏194,N为大于1的正整数。终端设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。
内部存储器121可以包括一个或多个随机存取存储器(random access memory,RAM)和一个或多个非易失性存储器(non-volatile memory,NVM)。
外部存储器接口120可以用于连接外部的非易失性存储器,实现扩展终端设备100的存储能力。外部的非易失性存储器通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部的非易失性存储器中。
终端设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当终端设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。终端设备100可以设置至少一个麦克风170C。在另一些实施例中,终端设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,终端设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动终端设备100平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of theUSA,CTIA)标准接口。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器180B可以用于确定终端设备100的运动姿态。气压传感器180C用于测量气压。磁传感器180D包括霍尔传感器。终端设备100可以利用磁传感器180D检测翻盖皮套的开合。加速度传感器180E可检测终端设备100在各个方向上(一般为三轴)加速度的大小。距离传感器180F,用于测量距离。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。环境光传感器180L用于感知环境光亮度。指纹传感器180H用于采集指纹。温度传感器180J用于检测温度。触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。骨传导传感器180M可以获取振动信号。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。SIM卡可以通过***SIM卡接口195,或从SIM卡接口195拔出,实现和终端设备100的接触和分离。终端设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时***多帧卡。所述多帧卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。终端设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,终端设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在终端设备100中,不能和终端设备100分离。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在终端设备100上运行时,使得终端设备100执行上述相关方法步骤实现上述实施例中的进程名称获取方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的进程名称获取方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的进程名称获取方法。
其中,本实施例提供的终端设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是,以上实施例仅用以说明本申请的技术方案而非限制,尽管参照较佳实施例对本申请进行了详细说明,本领域的普通技术人员应当理解,可以对本申请的技术方案进行修改或等同替换,而不离本申请技术方案的精神和范围。

Claims (12)

1.一种进程名称获取方法,应用于终端设备,其特征在于,所述终端设备包括应用进程和***进程,所述应用进程中包括运行时模块,所述方法包括:
若检测到所述应用进程发生崩溃,所述运行时模块获取所述应用进程的崩溃信息和标识名称;
所述运行时模块基于所述标识名称生成名称字符串,将所述名称字符串添加至所述崩溃信息中,并将所述崩溃信息发送至所述***进程;
所述***进程从所述崩溃信息中识别出所述名称字符串,并根据所述名称字符串得到所述标识名称;
若根据所述应用进程的进程识别信息,查询不到所述应用进程的进程信息,所述***进程将所述标识名称作为所述应用进程的进程名称。
2.如权利要求1所述的进程名称获取方法,其特征在于,所述运行时模块基于所述标识名称生成名称字符串,包括:
根据所述标识名称和预设的字符串构建规则,生成所述标识名称对应的名称字符串,其中,所述字符串构建规则包括采用预设字符对所述标识名称进行标记。
3.如权利要求1所述的进程名称获取方法,其特征在于,所述方法还包括:
所述***进程从所述崩溃信息中删除所述名称字符串。
4.如权利要求1所述的进程名称获取方法,其特征在于,所述崩溃信息为CrashInfo对象。
5.如权利要求4所述的进程名称获取方法,其特征在于,所述运行时模块将所述名称字符串添加至所述崩溃信息中包括:
将所述名称字符串添加至所述CrashInfo对象中目标字段对应的字段内容中。
6.如权利要求5所述的进程名称获取方法,其特征在于,所述运行时模块将所述名称字符串添加至所述CrashInfo对象中目标字段对应的字段内容中包括:
将所述名称字符串添加至所述目标字段的原有字段内容之后。
7.如权利要求5所述的进程名称获取方法,其特征在于,所述运行时模块将所述名称字符串添加至所述CrashInfo对象中目标字段对应的字段内容中,包括:
将所述名称字符串添加至所述目标字段的原有字段内容之前。
8.如权利要求5至7中任意一项所述的进程名称获取方法,其特征在于,所述***进程从所述崩溃信息中识别出所述名称字符串包括:
按照所述字符串构建规则,从所述崩溃信息中识别出所述名称字符串。
9.如权利要求8所述的进程名称获取方法,其特征在于,所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记,所述按照所述字符串构建规则,从所述崩溃信息中识别出所述名称字符串,包括:
从所述目标字段对应的字段内容的最后一个字段开始,按照从后往前的顺序,确定所述字段内容中是否存在所述第二字符;
若存在所述第二字符,确定所述字段内容中所述第二字符之前的字段中,是否存在所述第一字符;
若所述字段内容中所述第二字符之前的字段中存在所述第一字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间的字符组成的字符串,确定为所述名称字符串。
10.如权利要求8所述的进程名称获取方法,其特征在于,所述字符串构建规则采用第一字符与第二字符对所述标识名称进行标记,所述按照所述字符串构建规则,从所述崩溃信息中识别出所述名称字符串,包括:
从所述目标字段开始,按照从前往后的顺序,确定所述字段内容中是否存在所述第一字符;
若存在所述第一字符,确定所述字段内容中所述第一字符之后的字段中,是否存在所述第二字符;
若所述字段内容中所述第一字符之后的字段中存在所述第二字符,将所述第一字符、所述第二字符和所述第一字符与所述第二字符之间的字符组成的字符串,确定为所述名称字符串。
11.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在终端设备上运行时,使得所述终端设备执行如权利要求1至10中任一项所述的进程名称获取方法。
12.一种终端设备,其特征在于,所述终端设备包括处理器和存储器,所述存储器用于存储指令,所述处理器用于调用所述存储器中的指令,使得所述终端设备执行如权利要求1至10中任一项所述的进程名称获取方法。
CN202211449312.1A 2022-11-18 2022-11-18 进程名称获取方法、终端设备及存储介质 Active CN116662045B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211449312.1A CN116662045B (zh) 2022-11-18 2022-11-18 进程名称获取方法、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211449312.1A CN116662045B (zh) 2022-11-18 2022-11-18 进程名称获取方法、终端设备及存储介质

Publications (2)

Publication Number Publication Date
CN116662045A true CN116662045A (zh) 2023-08-29
CN116662045B CN116662045B (zh) 2024-06-18

Family

ID=87715946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211449312.1A Active CN116662045B (zh) 2022-11-18 2022-11-18 进程名称获取方法、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN116662045B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268473A (zh) * 2014-09-23 2015-01-07 龙芯中科技术有限公司 应用程序检测方法和装置
CN106547782A (zh) * 2015-09-22 2017-03-29 阿里巴巴集团控股有限公司 日志信息的获取方法及装置
CN107643980A (zh) * 2017-08-21 2018-01-30 武汉斗鱼网络科技有限公司 一种定位崩溃信息的方法与设备
CN109542714A (zh) * 2018-09-29 2019-03-29 中国平安人寿保险股份有限公司 应用程序监控方法及装置、计算机装置及计算机存储介质
CN111459715A (zh) * 2019-01-20 2020-07-28 华为技术有限公司 应用异常恢复
CN112311625A (zh) * 2020-10-26 2021-02-02 珠海格力电器股份有限公司 网络的管理方法和装置、存储介质、电子装置
CN113672465A (zh) * 2021-08-23 2021-11-19 一飞(海南)科技有限公司 进程名生成进程日志***的方法、***、介质、终端、无人机
CN114003470A (zh) * 2021-12-30 2022-02-01 北京中科网威信息技术有限公司 用户态进程异常的处理方法、装置、设备、及介质
CN115309547A (zh) * 2022-07-31 2022-11-08 荣耀终端有限公司 处理异步binder调用的方法和装置

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268473A (zh) * 2014-09-23 2015-01-07 龙芯中科技术有限公司 应用程序检测方法和装置
CN106547782A (zh) * 2015-09-22 2017-03-29 阿里巴巴集团控股有限公司 日志信息的获取方法及装置
CN107643980A (zh) * 2017-08-21 2018-01-30 武汉斗鱼网络科技有限公司 一种定位崩溃信息的方法与设备
CN109542714A (zh) * 2018-09-29 2019-03-29 中国平安人寿保险股份有限公司 应用程序监控方法及装置、计算机装置及计算机存储介质
CN111459715A (zh) * 2019-01-20 2020-07-28 华为技术有限公司 应用异常恢复
CN112311625A (zh) * 2020-10-26 2021-02-02 珠海格力电器股份有限公司 网络的管理方法和装置、存储介质、电子装置
CN113672465A (zh) * 2021-08-23 2021-11-19 一飞(海南)科技有限公司 进程名生成进程日志***的方法、***、介质、终端、无人机
CN114003470A (zh) * 2021-12-30 2022-02-01 北京中科网威信息技术有限公司 用户态进程异常的处理方法、装置、设备、及介质
CN115309547A (zh) * 2022-07-31 2022-11-08 荣耀终端有限公司 处理异步binder调用的方法和装置

Also Published As

Publication number Publication date
CN116662045B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
WO2021027630A9 (zh) 补丁方法、相关装置及***
CN113254409B (zh) 文件共享方法、***及相关设备
CN112771900B (zh) 一种数据传输方法及电子设备
CN114079893B (zh) 蓝牙通信方法、终端设备及计算机可读存储介质
CN113973398B (zh) 无线网络连接方法、电子设备及芯片***
WO2021218429A1 (zh) 应用窗口的管理方法、终端设备及计算机可读存储介质
WO2021185352A1 (zh) 一种版本升级方法及相关装置
CN113504887A (zh) 一种音量设置方法及电子设备
CN116662045B (zh) 进程名称获取方法、终端设备及存储介质
WO2022022466A1 (zh) 一种确定文件存储位置的方法、装置及终端
CN115022982B (zh) 多屏协同无感接入方法、电子设备及存储介质
WO2021254294A1 (zh) 一种切换音频输出通道的方法、装置和电子设备
WO2022062902A1 (zh) 一种文件传输方法和电子设备
WO2022052730A1 (zh) 应用异常退出的修复方法、装置与电子设备
CN113050864B (zh) 一种截屏方法及相关设备
CN114398108A (zh) 电子设备及其驱动加载方法、介质
CN117076089B (zh) 应用管理方法、终端设备及存储介质
CN116709609B (zh) 消息传递方法、电子设备及存储介质
CN114006969B (zh) 一种窗口启动方法和电子设备
CN116719376B (zh) 电压控制方法、装置、设备和存储介质
CN114945176B (zh) 剪切板访问管控方法、电子设备及存储介质
CN116662150B (zh) 应用启动耗时检测方法及相关装置
CN116048324B (zh) 桌面管理方法、电子设备及存储介质
CN116346982B (zh) 处理音频的方法、电子设备及可读存储介质
CN114666441B (zh) 一种调用其他设备能力的方法、电子设备、***和存储介质

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