CN110413432A - 一种信息处理方法、电子设备及存储介质 - Google Patents

一种信息处理方法、电子设备及存储介质 Download PDF

Info

Publication number
CN110413432A
CN110413432A CN201910590866.5A CN201910590866A CN110413432A CN 110413432 A CN110413432 A CN 110413432A CN 201910590866 A CN201910590866 A CN 201910590866A CN 110413432 A CN110413432 A CN 110413432A
Authority
CN
China
Prior art keywords
information
call stack
whole
thread
system kernel
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
CN201910590866.5A
Other languages
English (en)
Other versions
CN110413432B (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201910590866.5A priority Critical patent/CN110413432B/zh
Publication of CN110413432A publication Critical patent/CN110413432A/zh
Application granted granted Critical
Publication of CN110413432B publication Critical patent/CN110413432B/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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种信息处理方法,所述方法应用于电子设备,所述方法包括:在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息;基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。本发明还公开了一种电子设备及存储介质。

Description

一种信息处理方法、电子设备及存储介质
技术领域
本发明涉及通信技术领域,尤其涉及一种信息处理方法、电子设备及存储介质。
背景技术
目前当安卓架构(Android framework)层发生看门狗(Watchdog)异常的时候,根据系统记录的信息不能够完全确定看门狗异常的原因,看门狗故障的复现率高,解决故障的效率低下。
发明内容
本发明实施例提供了一种信息处理方法、电子设备和存储介质,能够确定看门狗异常的原因,降低看门狗故障的复现率,提高解决故障的效率。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种信息处理方法,应用于电子设备,所述方法包括:在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息;基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。
上述方案中,所述方法还包括:基于所述第二线程,判断获取系统内核的全部进程的状态信息和调用栈信息的方式;基于所述判断结果,获取系统内核的全部进程的状态信息和调用栈信息。
上述方案中,所述基于所述第二线程判断获取系统内核的全部进程的状态信息和调用栈信息的方式,包括:
在所述第二线程的第一函数值为第一值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息;
在所述第二线程的第一函数值为第二值时,判断基于第二方式为获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在所述第二线程的第一函数值为第三值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
上述方案中,所述获取系统内核的全部进程的状态信息和调用栈信息,包括:
在第一进程创建完成的情况下,所述第一进程创建第三线程;
所述第二线程向所述第三线程发送异步信息;
所述第三线程基于所述异步信息,记录系统内核的全部进程的状态信息和调用栈函数信息。
上述方案中,所述获取系统内核的全部进程的状态信息和调用栈信息,包括:
触发所述电子设备存储所述电子设备内存中的全部信息;
查询所述电子设备存储的所述全部信息;
所述电子设备内存中的全部信息至少包括:系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
第二方面,本发明实施例还提供一种电子设备,所述电子设备包括:
获取单元,用于在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息;
处理单元,用于基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。
上述方案中,所述获取单元,还用于基于第二线程,判断获取系统内核的全部进程的状态信息和调用栈信息的方式;
基于所述判断结果,获取系统内核的全部进程的状态信息和调用栈信息。
上述方案中,所述获取单元,还用于:
在所述第二线程的第一函数值为第一值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息;
在所述第二线程的第一函数值为第二值时,判断基于第二方式为获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在所述第二线程的第一函数值为第三值时,判断基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,以及基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息。
上述方案中,所述获取单元,用于在第一进程创建完成的情况下,创建第三线程;
向所述第三线程发送异步信息;
基于所述异步信息,记录系统内核的全部进程的状态信息和调用栈函数信息。
上述方案中,所述获取单元,用于触发所述电子设备存储所述电子设备内存中的全部信息;
查询所述电子设备存储的所述全部信息;
所述电子设备内存中的全部信息至少包括:系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
第三方面,本发明实施例还提供一种电子设备,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,
所述处理器用于运行所述计算机程序时,执行上述的信息处理方法的步骤。
第四方面,本发明实施例还提供一种存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现上述的信息处理方法。
本发明实施例提供的信息处理方法、电子设备及存储介质,电子设备在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息;基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。如此,通过全面记录当前系统上全部进程的状态信息和调用栈信息,使得在看门狗异常时,能够根据全部进程的状态信息和调用栈信息,准确、全面的确定看门狗异常的原因,不仅减少了由于故障信息记录不全面导致的问题重复复现,而且避免了由于故障不复现,小概率问题故障信息无法采集而导致的无法定位的现象;另一方面可以快速定位得到产生问题的原因,提高解决问题的效率。
附图说明
图1为本发明实施例电子设备的软/硬件结构示意图;
图2为本发明实施例提供的信息处理方法的可选处理流程示意图一;
图3为本发明实施例提供的信息处理方法的可选处理流程示意图二;
图4为本发明实施例电子设备获取系统内核的全部进程的状态信息和调用栈信息的处理流程示意图;
图5为本发明实施例提供的信息处理方法的可选处理流程示意图三;
图6为本发明实施例电子设备获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息的处理流程示意图;
图7为本发明实施例提供的信息处理方法的可选处理流程示意图四;
图8为本发明实施例电子设备基于所述第一方式获取的系统内核的全部进程的状态信息和调用栈函数信息,以及基于所述第二方式获取的系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息的处理流程示意图;
图9为本发明实施例电子设备的组成结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
对本发明进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)watchdog
watchdog为Android平台内运行的一个软件,用于监护system_server。system_server是Android平台中最重要的进程,里面运行了整个平台中绝大多数的服务。在这个进程中运行着近50个线程,任何一个线程死掉都可能导致整个系统死掉。system_server退出反而问题不大,因为init进程会重新启动system_server,但是system_server死锁,整个系统就没法运行。
在system_server里运行的服务中,最重要的几个服务为ActivityManager、WindowManager和PowerManager。软件的watchdog主要就是确保这几个服务发生死锁之后,退出system_server进程,让init进程重启system_server进程,让系统回到可用状态。
2)system_server
system_server是Android系统的核心,是Android framework层的系统服务模块,这个模块主要功能就是管理供Android应用开发的系统服务,在Dalvik虚拟机启动后立即开始初始化和运行,其它的系统服务在system_server进程的环境中运行。
3)dump
dump是备份文件系统,在特定时刻,将整个储存装置或储存装置之某部分的内容记录在另一储存装置中。存储的目的通常是为了防止发生错误。
在本发明可选实施例中,电子设备在Android framework层发生看门狗异常的时候,系统会自动记录发生问题之前系统部分进程的信息;如:系统进程system-server各个线程状态和栈回溯信息、surface flinger的各个线程状态和栈回溯信息等重要用户空间进行信息;但是,当前系统记录的信息还不足以能够全面确定看门狗发生异常的原因,进而导致看门狗故障的复现率高,解决看门狗故障的效率低的问题。
4)IPC
进程间通信(IPC,Inter-Process Communication)指至少两个进程或线程间传送数据或信号的一些技术或方法。
针对上述问题,本发明实施例提供一种信息处理方法以及电子设备,其中,电子设备作为实施信息处理方法的实体,在实际应用中可以采用多种方式来实施,例如,电子设备可以是智能手机、平板电脑、笔记本电脑或穿戴式设备(如智能眼镜、智能手表等),电子设备的操作系统是安卓操作系统,本发明实施例中的附图中以电子设备为智能手机进行说明,这不构成对本发明实施例记载的技术方案所适用的电子设备类型的限定。
就电子设备10的软/硬件结构来说,参见图1,包括:硬件层、驱动层、操作系统层和应用层。然而,本领域的技术人员应当理解,用于信息处理的电子设备10可以根据实施需要设置较图1更多的组件,或者根据实施需要省略设置部分组件。
电子设备10的硬件层包括处理器161、输入/输出接口163,存储器164以及网络接口162,组件可以经系统总线连接通信。
处理器161可以采用中央处理器(CPU,Central Processing Unit)、微处理器(MCU,Microcontroller Unit)、专用集成电路(ASIC,Application Specific IntegratedCircuit)或逻辑可编程门阵列(FPGA,Field-Programmable Gate Array)实现。
输入/输出接口163可以采用如显示屏、触摸屏、扬声器等输入/输出器件实现。
存储器164可以采用闪存、硬盘、光盘等非易失性存储介质实现,也可以采用双倍率(DDR,Double Data Rate)动态缓存等易失性存储介质实现,其中存储有用以执行上述广告效果分析方法的可执行指令。
网络接口162向处理器161提供外部数据如异地设置的存储器164的基于网络传输协议(TCP,Transfer Control Protocol)/用户数据协议(UDP,User Datagram Protocol)的访问能力。
驱动层包括用于供操作系统166识别硬件层,并与硬件层各组件通信的中间件165,例如可以为针对硬件层的各组件的驱动程序的集合。
操作系统166用于提供面向用户的图形界面,操作系统166支持用户经由图形界面对点着设备的控制;本发明实施例对上述设备的软件环境如操作系统类型、版本不做限定,例如可以是Linux操作系统和UNIX操作系统等。
应用层包括用于实现本发明实施例提供的信息处理方法的应用程序167,当然,还可以包括其他程序168。
至此,已经按照其功能描述了本发明实施例中涉及的电子设备,基于图1示出的电子设备的软/硬件结构,继续对本发明实施例提供的信息处理的方案进行说明。
图2示出了本发明实施例提供的信息处理方法的可选处理流程示意图一,将根据各个步骤进行说明。
步骤S101,电子设备在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息。
在一可选实施例中,第一线程可以为Android framework层的watchdog,当Android framework层的watchdog发生异常的情况下,电子设备获取系统内核的全部进程的状态信息和调用栈信息。
这里,进程的状态信息可包括下述中的至少一种:可执行状态(TASK_RUNNING)、可中断的睡眠状态(TASK_INTERRUPTIBLE)、不可中断的睡眠状态(TASK_UNINTERRUPTIBLE)、退出死亡状态(EXIT_DEAD)、僵尸态(EXIT_ZOMBIE)、退出追踪状态(EXIT_TRACE)、进程退出后,等待资源回收时的状态(TASK_DEAD)、收到致命信号时,唤醒进程状态(TASK_WAKEKILL)、唤醒状态(TASK_WAKING)、暂存状态(TASK_PARKED)、未加载状态(TASK_NOLOAD)。
调用栈信息包括调用函数信息;或者,调用栈信息包括调用函数信息和调用栈中各个变量的信息。在具体实施时,调用栈信息可包括下述中的至少一种:函数名、函数的调用关系、函数中的变量名、函数中变量的值。
步骤S102,电子设备基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。
这里,通过获取到的全部进程的状态信息和调用栈信息,可以确定Androidframework层的watchdog发生异常的原因。
举例来说,当system_server内核线程正在和其他的内核进程IPC通信时,导致系统调用到system_server内核时卡住,进而导致看门狗发生异常;通过获取到的内核全部进程的状态信息和调用栈信息,便能够确定看门狗发生异常的原因是system_server内核线程正在和其他的内核进程IPC通信。
当内核进程发生了互斥锁死而导致看门狗发生异常;通过获取到的内核全部进程的状态信息和调用栈信息,便能够确定看门狗发生异常的原因是内核进程发生了互斥锁死。当内存过低导致看门狗发生异常;通过获取到的内核全部进程的状态信息和调用栈信息,便能够确定看门狗发生异常的原因是内存过低。再或者,当某个进程状态异常导致看门狗发生异常;通过获取到的内核全部进程的状态信息和调用栈信息,便能够确定看门狗发生异常的原因是某个进程状态异常。
在一些实施例中,在执行步骤S101之前,所述方法还包括:
步骤S100,电子设备基于第二线程,判断获取系统内核的全部进程的状态信息和调用栈信息的方式。
在一些实施例中,在所述第二线程的第一函数值为第一值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息;
在所述第二线程的第一函数值为第二值时,判断基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在所述第二线程的第一函数值为第三值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在所述第二线程的第一函数值为第四值时,判断基于系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息;
在所述第二线程的第一函数值为第五值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息;
在所述第二线程的第一函数值为第六值时,判断基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,以及基于系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息;
在所述第二线程的第一函数值为第七值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,以及基于系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息;
所述第一方式也称为轻量级方案;所述第二方式也称为标准方案;相应的,在所述第二线程的第一函数值为第三值时,采用的是轻量级方案和标准方案结合的第三方案。所述系统自动记录的方式也称为原始方案;相应的,在所述第二线程的第一函数值为第五值时,采用的是轻量级方案和原始方案结合的第五方案;在所述第二线程的第一函数值为第六值时,采用的是标准方案和原始方案结合的第六方案;所述第二线程的第一函数值为第七值时,采用的是轻量级方案、标准方案、原始方案结合的第七方案;
可选地,第一函数为run()函数,第一值为1,第二值为2,第三值为3,第四值为4,第五值为5,第六值为6,第7值为7。在具体实施时,若第一函数值为1,则采用第一方式获取系统内核的全部进程的状态信息和调用栈函数信息;若第一函数值为2,则采用第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;若第一函数值为3,则采用第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及采用第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;若第一函数值为4,则采用系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息;若第一函数值为5,则采用第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及采用系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息;若第一函数值为6,则采用第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,以及采用系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息;若第一函数值为7,则采用第一方式获取系统内核的全部进程的状态信息和调用栈函数信息、以及采用第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息、以及采用系统自动记录的方式获取系统部分进程中各个线程状态和栈回溯信息。
需要说明的是,所述系统自动记录的方式,是指当Android framework层的watchdog发生异常的情况下,系统自动记录发生问题之前系统部分进程中全部线程的状态和栈回溯信息。所述系统部分进程中全部线程的状态与所述第一方式、所述第二方式中系统内核的全部进程的状态信息是不同的;所述系统部分进程中的栈回溯信息与所述第一方式、所述第二方式中调用栈函数信息和调用栈中全部变量的信息也是不同的。
在执行步骤S100之后,所述方法还包括:
步骤S100’,电子设备基于所述判断结果,获取系统内核的全部进程的状态信息和调用栈信息。
在一些实施例中,在判断结果是第一方式时,获取系统内核的全部进程的状态信息和调用栈函数信息;
判断结果是第二方式时,获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
判断结果是第一方式以及第二方式时,获取系统内核的全部进程的状态信息和调用栈函数信息,以及获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在判断结果是系统自动记录的方式时,获取系统部分进程中各个线程状态和栈回溯信息;
在判断结果是第一方式以及系统自动记录的方式时,获取系统内核的全部进程的状态信息和调用栈函数信息,以及系统部分进程中各个线程状态和栈回溯信息;
在判断结果是第二方式以及系统自动记录的方式时,获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,以及系统部分进程中各个线程状态和栈回溯信息;
在判断结果是第一方式、第二方式以及系统自动记录的方式时,获取系统内核的全部进程的状态信息和调用栈函数信息,以及获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,以及系统部分进程中各个线程状态和栈回溯信息。
下面以第一线程为Android framework层的watchdog线程,第二线程为system_server watchdog线程,第三线程为system_server创建的新线程T1,第一进程为system_server进程作为示例,对本发明实施例提供的信息处理方法的可选处理流程二进行描述,如图3所示,所述方法包括:
步骤S201,电子设备在所述第二线程的第一函数值为第一值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息。
在一可选实施例中,在Android framework层的watchdog线程的run()函数的值为1时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息。
步骤S202,电子设备基于所述第一方式,获取系统内核的全部进程的状态信息和调用栈函数信息。
步骤S203,电子设备基于系统内核的全部进程的状态信息和调用栈函数信息,确定所述第一线程发生异常的原因。
本发明实施例中,电子设备获取系统内核的全部进程的状态信息和调用栈信息的处理流程,如图4所示,所述方法包括:
步骤S2021,在第一进程创建完成的情况下,所述第一进程创建第三线程。
在一实施方式中,在system_server进程创建完成的情况下,system_server进程创建一个新线程T1,即第三线程。通过新线程T1执行获取系统内核的全部进程的状态信息和调用栈信息的操作。
步骤S2022,第二线程向所述第三线程发送异步信息。
在一实施方式中,当system_server watchdog线程检测到Android framework层的watchdog线程发生异常的时候,system_server watchdog线程向system_server进程创建的新线程T1发送异步信息。其中,所述异步信息的信息协议可根据实际的场景灵活定义。在新线程T1接收到异步信息之后,无需向system_server watchdog线程发送基于异步信息的反馈信息;相应的,system_server watchdog线程也无需等待新线程T1发送的基于异步信息的反馈信息。
步骤S2023,所述第三线程基于所述异步信息,记录系统内核的全部进程的状态信息和调用栈函数信息。
在一实施方式中,T1基于所述异步信息记录系统内核的全部进程的状态信息和调用栈函数信息,包括:
在/data/anr目录下创建新文件F1,用于保存要记录的系统内核的全部进程的状态信息和调用栈函数信息;
检索/proc/<pid>/目录下的comm文件获取内核的全部进程的进程名;检索/proc/<pid>/目录下stack文件获取内核调用栈信息;检索/proc/<pid>/目录下state文件获取内核的全部进程的状态信息,并记录在F1中。
需要说明的是,在F1中记录内核的全部进程的进程名、内核调用栈信息、内核的全部进程的状态信息时,可以按照固定的格式,便于阅读。同时,F1可以保存在固定目录下,也可以采用以F1路径链接弹出或者直接弹出F1文件的形式。另外,F1的文件名中可以包含时间信息。
下面以第一线程为Android framework层的watchdog线程,第二线程为system_server watchdog线程作为示例,对本发明实施例提供的信息处理方法的可选处理流程三进行描述,如图5所示,所述方法包括:
步骤S301,电子设备在所述第二线程的第一函数值为第二值时,判断基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
在一可选实施例中,当system_server watchdog线程检测到Android framework层的watchdog线程发生异常的时候,在Android framework层的watchdog线程的run()函数的值为2时,判断基于第二方式系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
步骤S302,电子设备基于所述第二方式,获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
步骤S303,电子设备基于系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,确定所述第一线程发生异常的原因。
本发明实施例中,电子设备获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息的处理流程,如图6所示,所述方法包括:
步骤S3021,触发所述电子设备存储所述电子设备内存中的全部信息。
所述电子设备内存中的全部信息至少包括:系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
在一实施方式中,system_server watchdog线程向/proc/sysrq-trigger文件节点里写入'c'字符,电子设备进入dump模式。
在步骤S3021之后,还包括步骤S3022。
步骤S3022,查询所述电子设备存储的所述全部信息;
在一实施方式中,当系统处于dump模式下,通过第三方工具,比如qpst工具,从电子设备里采集dump信息。通过相应的工具去解析dump信息得到系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。所述dump信息中至少包含系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
下面以第一线程为Android framework层的watchdog线程,第二线程为system_server watchdog线程,第三线程为system_server创建的新线程T1,第一进程为system_server进程作为示例,对本发明实施例提供的信息处理方法的可选处理流程四进行描述,如图7所示,所述方法包括:
步骤401,电子设备在所述第二线程的第一函数值为第三值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
在一可选实施例中,在Android framework层的watchdog线程的run()函数的值为3时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
步骤S402,电子设备基于所述第一方式,获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于所述第二方式,获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
步骤S403,基于所述第一方式获取的系统内核的全部进程的状态信息和调用栈函数信息,以及基于所述第二方式获取的系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,确定所述第一线程发生异常的原因。
本发明实施例中,电子设备基于所述第一方式获取的系统内核的全部进程的状态信息和调用栈函数信息,以及基于所述第二方式获取的系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息的处理流程,如图8所示,所述方法包括:
步骤S4021,在第一进程创建完成的情况下,所述第一进程创建第三线程。
在一实施方式中,在system_server进程创建完成的情况下,system_server进程创建一个新线程T1,即第三线程。通过新线程T1执行获取系统内核的全部进程的状态信息和调用栈信息的操作。
步骤S4022,所述第二线程向所述第三线程发送异步信息。
在一实施方式中,当system_server watchdog线程检测到Android framework层的watchdog线程发生异常的时候,system_server watchdog线程向system_server进程创建的新线程T1发送异步信息。
所述异步信息可以是当system_server watchdog线程检测到Android framework层的watchdog线程发生异常的时候,Android framework层的watchdog线程向system_server watchdog线程创建的新线程T1发送信息之后不需要等待信息回复,并且所述异步信息的信息协议可以自由定义。当T1接收到所述异步信息即可执行获取系统内核的全部进程的状态信息和调用栈信息的操作,所述异步信息携带的信息或者内容可以自由定义。
步骤S4023,所述第三线程基于所述异步信息,记录系统内核的全部进程的状态信息和调用栈函数信息。
在一实施方式中,T1基于所述异步信息记录系统内核的全部进程的状态信息和调用栈函数信息,包括:
在/data/anr目录下创建新文件F1,用于保存要记录的系统内核的全部进程的状态信息和调用栈函数信息;
检索/proc/<pid>/目录下的comm文件获取内核的全部进程的进程名;检索/proc/<pid>/目录下stack文件获取内核调用栈信息;检索/proc/<pid>/目录下state文件获取内核的全部进程的状态信息,并记录在F1中。
需要说明的是,在F1中记录内核的全部进程的进程名、内核调用栈信息、内核的全部进程的状态信息时,可以按照固定的格式,便于阅读。同时,F1可以保存在固定目录下,也可以采用以F1路径链接弹出或者直接弹出F1文件的形式。另外,F1的文件名中可以包含时间信息。
步骤S4024,触发所述电子设备存储所述电子设备内存中的全部信息。
所述电子设备内存中的全部信息至少包括:系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
在一实施方式中,system_server watchdog线程向/proc/sysrq-trigger文件节点里写入'c'字符,电子设备进入dump模式。
在步骤S4024之后,还包括步骤S4025。
步骤S4025,查询所述电子设备存储的所述全部信息。
在一实施方式中,当系统处于dump模式下,通过第三方工具,比如qpst工具,从电子设备里采集dump信息。通过相应的工具去解析dump信息得到系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
所述dump信息中至少包含系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
基于上述实施例提供的信息处理方法,本发明实施例还提供一种电子设备,所述电子设备的组成结构示意图,如图9所示,包括:
获取单元501,用于在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息;
处理单元502,用于基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。
在一实施方式中,所述获取单元501,还用于基于第二线程,判断获取系统内核的全部进程的状态信息和调用栈信息的方式;
基于所述判断结果,获取系统内核的全部进程的状态信息和调用栈信息。
在一实施方式中,所述获取单元501,还用于:
在所述第二线程的第一函数值为第一值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息;
在所述第二线程的第一函数值为第二值时,判断基于第二方式为获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在所述第二线程的第一函数值为第三值时,判断基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息,以及基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息。
在一实施方式中,所述获取单元501,用于在第一进程创建完成的情况下,创建第三线程;
向所述第三线程发送异步信息;
所述第三线程基于所述异步信息,记录系统内核的全部进程的状态信息和调用栈函数信息。
在一实施方式中,所述获取单元501,用于触发所述电子设备存储所述电子设备内存中的全部信息;
查询所述电子设备存储的所述全部信息;
所述电子设备内存中的全部信息至少包括:系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种信息处理方法,其特征在于,所述方法应用于电子设备,所述方法包括:
在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息;
基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于第二线程,判断获取系统内核的全部进程的状态信息和调用栈信息的方式;
基于所述判断结果,获取系统内核的全部进程的状态信息和调用栈信息。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第二线程判断获取系统内核的全部进程的状态信息和调用栈信息的方式,包括:
在所述第二线程的第一函数值为第一值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息;
在所述第二线程的第一函数值为第二值时,判断基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在所述第二线程的第一函数值为第三值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述获取系统内核的全部进程的状态信息和调用栈信息,包括:
在第一进程创建完成的情况下,所述第一进程创建第三线程;
第二线程向所述第三线程发送异步信息;
所述第三线程基于所述异步信息,记录系统内核的全部进程的状态信息和调用栈函数信息。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述获取系统内核的全部进程的状态信息和调用栈信息,包括:
触发所述电子设备存储所述电子设备内存中的全部信息;
查询所述电子设备存储的所述全部信息;
所述电子设备内存中的全部信息至少包括:系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
6.一种电子设备,其特征在于,所述电子设备包括:
获取单元,用于在第一线程发生异常的情况下,获取系统内核的全部进程的状态信息和调用栈信息;
处理单元,用于基于所述全部进程的状态信息和调用栈信息,确定所述第一线程发生异常的原因。
7.根据权利要求6所述的电子设备,其特征在于,所述获取单元,还用于基于第二线程,判断获取系统内核的全部进程的状态信息和调用栈信息的方式;
基于所述判断结果,获取系统内核的全部进程的状态信息和调用栈信息。
8.根据权利要求7所述的电子设备,其特征在于,所述获取单元,还用于在所述第二线程的第一函数值为第一值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息;
在所述第二线程的第一函数值为第二值时,判断基于第二方式为获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息;
在所述第二线程的第一函数值为第三值时,判断基于第一方式获取系统内核的全部进程的状态信息和调用栈函数信息,以及基于第二方式获取系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
9.根据权利要求6至8任一项所述的电子设备,其特征在于,所述获取单元,用于在第一进程创建完成的情况下,创建第三线程;
向所述第三线程发送异步信息;
基于所述异步信息,记录系统内核的全部进程的状态信息和调用栈函数信息。
10.根据权利要求6至8任一项所述的电子设备,其特征在于,所述获取单元,用于触发所述电子设备存储所述电子设备内存中的全部信息;
查询所述电子设备存储的所述全部信息;
所述电子设备内存中的全部信息至少包括:系统内核的全部进程的状态信息、调用栈函数信息和调用栈中全部变量的信息。
11.一种电子设备,其特征在于,包括处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,
所述处理器用于运行所述计算机程序时,执行权利要求1至5任一项所述的信息处理方法的步骤。
12.一种存储介质,其特征在于,存储有可执行程序,所述可执行程序被处理器执行时,实现权利要求1至5任一项所述的信息处理方法。
CN201910590866.5A 2019-07-02 2019-07-02 一种信息处理方法、电子设备及存储介质 Active CN110413432B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910590866.5A CN110413432B (zh) 2019-07-02 2019-07-02 一种信息处理方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910590866.5A CN110413432B (zh) 2019-07-02 2019-07-02 一种信息处理方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN110413432A true CN110413432A (zh) 2019-11-05
CN110413432B CN110413432B (zh) 2023-09-01

Family

ID=68360099

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910590866.5A Active CN110413432B (zh) 2019-07-02 2019-07-02 一种信息处理方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN110413432B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078449A (zh) * 2019-11-29 2020-04-28 深圳大学 信息处理方法、信息处理装置及终端设备
CN111538986A (zh) * 2020-04-15 2020-08-14 南京东科优信网络安全技术研究院有限公司 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法
CN112000375A (zh) * 2020-07-13 2020-11-27 深圳市智微智能软件开发有限公司 安卓系统的启动阶段判断方法、装置、设备及存储介质
CN112099982A (zh) * 2020-09-08 2020-12-18 北京字节跳动网络技术有限公司 一种崩溃信息定位方法、装置、介质和电子设备
CN112463545A (zh) * 2020-12-22 2021-03-09 上海金卓科技有限公司 一种操作系统的检测方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305455A (en) * 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN103092746A (zh) * 2013-02-05 2013-05-08 上海大唐移动通信设备有限公司 线程异常的定位方法及系统
US20150261596A1 (en) * 2014-03-17 2015-09-17 Microsoft Corporation Framework for user-mode crash reporting
CN105159819A (zh) * 2015-09-01 2015-12-16 汉柏科技有限公司 一种记录内核异常栈及调试信息的方法及系统
CN105260257A (zh) * 2015-11-12 2016-01-20 用友网络科技股份有限公司 解决程序运行期间停止响应的方法和装置
CN105843741A (zh) * 2016-03-24 2016-08-10 腾讯科技(深圳)有限公司 应用程序的信息处理方法和装置
CN108021496A (zh) * 2016-10-28 2018-05-11 腾讯科技(深圳)有限公司 线程数据处理方法及装置
CN108763060A (zh) * 2018-04-27 2018-11-06 广州华多网络科技有限公司 Android系统中Native层崩溃溯源方法、装置、存储介质及终端

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305455A (en) * 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN103092746A (zh) * 2013-02-05 2013-05-08 上海大唐移动通信设备有限公司 线程异常的定位方法及系统
US20150261596A1 (en) * 2014-03-17 2015-09-17 Microsoft Corporation Framework for user-mode crash reporting
CN105159819A (zh) * 2015-09-01 2015-12-16 汉柏科技有限公司 一种记录内核异常栈及调试信息的方法及系统
CN105260257A (zh) * 2015-11-12 2016-01-20 用友网络科技股份有限公司 解决程序运行期间停止响应的方法和装置
CN105843741A (zh) * 2016-03-24 2016-08-10 腾讯科技(深圳)有限公司 应用程序的信息处理方法和装置
CN108021496A (zh) * 2016-10-28 2018-05-11 腾讯科技(深圳)有限公司 线程数据处理方法及装置
CN108763060A (zh) * 2018-04-27 2018-11-06 广州华多网络科技有限公司 Android系统中Native层崩溃溯源方法、装置、存储介质及终端

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
ZHANG MING: "Research and application of windows system exception handling mechanism", 《COMPUTER ENGINEERING》, 31 December 2009 (2009-12-31) *
朱剑锋等: "基于堆栈回溯的异常处理", 《计算机工程与设计》 *
朱剑锋等: "基于堆栈回溯的异常处理", 《计算机工程与设计》, no. 12, 16 December 2014 (2014-12-16) *
董正言: "《C++面向对象程序设计》", 北京邮电大学出版社 *
董正言: "《C++面向对象程序设计》", 北京邮电大学出版社, pages: 65 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078449A (zh) * 2019-11-29 2020-04-28 深圳大学 信息处理方法、信息处理装置及终端设备
CN111078449B (zh) * 2019-11-29 2020-11-13 深圳大学 信息处理方法、信息处理装置及终端设备
CN111538986A (zh) * 2020-04-15 2020-08-14 南京东科优信网络安全技术研究院有限公司 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法
CN111538986B (zh) * 2020-04-15 2023-05-09 南京东科优信网络安全技术研究院有限公司 一种基于调用栈轨迹进行动态度量计算机可信状态装置及其方法
CN112000375A (zh) * 2020-07-13 2020-11-27 深圳市智微智能软件开发有限公司 安卓系统的启动阶段判断方法、装置、设备及存储介质
CN112000375B (zh) * 2020-07-13 2023-12-26 深圳市智微智能软件开发有限公司 安卓系统的启动阶段判断方法、装置、设备及存储介质
CN112099982A (zh) * 2020-09-08 2020-12-18 北京字节跳动网络技术有限公司 一种崩溃信息定位方法、装置、介质和电子设备
CN112463545A (zh) * 2020-12-22 2021-03-09 上海金卓科技有限公司 一种操作系统的检测方法及装置

Also Published As

Publication number Publication date
CN110413432B (zh) 2023-09-01

Similar Documents

Publication Publication Date Title
CN110413432A (zh) 一种信息处理方法、电子设备及存储介质
CN103207797B (zh) 基于通用可扩展固件接口固件系统的胶囊式定制更新方法
US7870443B2 (en) Method to isolate crash of an embedded multi-threaded application to a shared library call without core dump files or debugger
US10157089B2 (en) Event queue management for embedded systems
CN110716748A (zh) 业务处理方法、装置、计算机可读介质及电子设备
CN102819478B (zh) 一种无代理的数据处理系统监控与管理方法
US11327816B2 (en) Monitoring components in a service framework
CN108549568A (zh) 应用入口处理方法、装置、存储介质及电子设备
CN112965794B (zh) 算法调用方法、电子设备及存储介质
CN105308578B (zh) 状态转变的诊断
WO2023087764A1 (zh) 算法应用元的打包方法及装置、设备、存储介质和计算机程序产品
CN105930190B (zh) 一种基于操作系统的程序自启动方法和装置
CN112788112A (zh) 设备健康管理微服务自动发布方法、装置和平台
CN109254856A (zh) 智能pos服务端提供接口给客户端的方法
CN110908644A (zh) 状态节点的配置方法、装置、计算机设备和存储介质
CN101000570A (zh) 计算机平台开机配置存储器备援处理方法及系统
CN109460251B (zh) 构件集成框架管理方法和装置
CN102426535A (zh) 动态进程虚拟化
CN117055977B (zh) 无代码应用间的数据联动方法和装置
CN117033084B (zh) 虚拟机备份方法、装置、电子设备及存储介质
US20220043658A1 (en) Systems and methods for managing system rollup of accelerator health
US11074005B1 (en) Coordinated storage media verification
US20240111579A1 (en) Termination of sidecar containers
CN108804463B (zh) 一种MySQL数据库的数据同步方法、装置及电子设备
CN115206475A (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
GR01 Patent grant