CN117215840A - 终端及其内核异常的日志存储方法及装置、可读存储介质 - Google Patents

终端及其内核异常的日志存储方法及装置、可读存储介质 Download PDF

Info

Publication number
CN117215840A
CN117215840A CN202311283241.7A CN202311283241A CN117215840A CN 117215840 A CN117215840 A CN 117215840A CN 202311283241 A CN202311283241 A CN 202311283241A CN 117215840 A CN117215840 A CN 117215840A
Authority
CN
China
Prior art keywords
log
kernel
abnormal
operating system
event
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
Application number
CN202311283241.7A
Other languages
English (en)
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.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Spreadtrum Communications Shanghai 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 Spreadtrum Communications Shanghai Co Ltd filed Critical Spreadtrum Communications Shanghai Co Ltd
Priority to CN202311283241.7A priority Critical patent/CN117215840A/zh
Publication of CN117215840A publication Critical patent/CN117215840A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种终端及其内核异常的日志存储方法及装置、可读存储介质,所述终端的操作系统包含内核层、服务层,所述方法包括:响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,其中,如果所述异常事件为需要重启所述操作系统的异常事件,则通过所述日志存储线程将异常日志存储至所述内核层内预先指定的非易失性存储空间;在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。本发明可以有效保存异常事件的异常日志,从而不必依赖返厂后的测试模式下复现故障问题,也能进行有效研发分析。

Description

终端及其内核异常的日志存储方法及装置、可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种终端及其内核异常的日志存储方法及装置、可读存储介质。
背景技术
在现有的智能终端的操作系统中,当发生芯片异常或者驱动加载失败时,容易发生定屏、死机、重启等问题,需要依赖日志对问题进行分析。
在现有的一种终端的操作系统中,操作系统可以包含服务(Native)层和内核(Kernel)层。
然而,对于内核层发生异常事件的情况,现有的日志存储方式不能满足需求。具体而言,在现有技术中,是由服务层进程读取并保存日志到系统分区的,但是如果在内核层启动中就出现了内核异常,如内核崩溃(Kernel Crash)或者宕机(Panic)等,用户空间进程无法接收到内核层的消息,服务层也就无法接收到并保存这部分日志,导致难以进行研发分析。
亟需一种终端内核异常的日志存储方法,可以有效保存异常事件的日志,从而不必依赖返厂后的测试模式下复现故障问题,也能进行有效研发分析。
发明内容
本发明解决的技术问题是提供一种终端及其内核异常的日志存储方法及装置、可读存储介质,可以有效保存异常事件的异常日志,从而不必依赖返厂后的测试模式下复现故障问题,也能进行有效研发分析。
为解决上述技术问题,本发明实施例提供一种终端内核异常的日志存储方法,所述终端的操作系统包含内核层、服务层,所述方法包括:响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,其中,如果所述异常事件为需要重启所述操作系统的异常事件,则通过所述日志存储线程将所述异常日志存储至所述内核层内预先指定的非易失性存储空间;在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。
可选的,所述非易失性存储空间为在所述内核层内预先指定的裸分区。
可选的,所述操作系统为安卓操作系统;其中,所述非易失性存储空间为所述内核层内部预先指定的持久存储空间。
可选的,响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,包括:如果所述异常事件为需要重启所述操作系统的异常事件,则所述内核层通过网络链接发送异常事件消息通知给所述服务层。
可选的,所述异常事件消息包括:事件时间、事件名称、模块名称、故障描述和附加信息;其中,所述附加信息包含:寄存器信息和/或堆栈信息;所述模块名称用于表示所述内核层中发生异常事件的模块。
可选的,所述异常事件消息还包括:内核层的核心记录信息。
可选的,所述事件时间、事件名称、模块名称、故障描述分别预分配有预设的固定字节长度;和/或,所述附加信息分配的是可变的字节长度。
可选的,所述方法还包括:如果所述异常事件为不需要重启所述操作系统的异常事件,则通过所述日志存储线程将所述异常日志存储至磁盘。
为解决上述技术问题,本发明实施例提供一种终端内核异常的日志存储装置,所述终端的操作系统包含内核层、服务层,所述装置包括:日志存储线程启动模块,用于响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,其中,如果所述异常事件为需要重启所述操作系统的异常事件,则通过所述日志存储线程将所述异常日志存储至所述内核层内预先指定的非易失性存储空间;重启后保存模块,用于在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。
为解决上述技术问题,本发明实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述的终端内核异常的日志存储方法的步骤。
为解决上述技术问题,本发明实施例提供一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时执行上述的终端内核异常的日志存储方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
在本发明实施例中,通过在内核层发生异常事件的情况下,通过终端的操作系统包含的服务层启动日志存储线程,可以启动异常日志存储;并且在异常事件为需要重启所述操作系统的异常事件时,可以将所述异常日志存储至所述内核层内预先指定的非易失性存储空间,从而利用非易失性存储空间对异常日志进行存储,实现在内核层发生异常事件导致重启操作系统的过程中,有效保存异常事件的异常日志,从而不必依赖返厂后的测试模式下复现故障问题,也能进行有效研发分析。
进一步,所述非易失性存储空间为在所述内核层内预先指定的裸分区(rawpartition),由于裸分区未被格式化过,不被操作系统直接管理,而是可以由内核层实现读写操作,因此通过日志存储线程将所述异常日志存储至所述内核层内预先指定的裸分区,可以获得更好的存储共性,并增强数据的保护性。进一步地,在内核异常事件中,如内核崩溃(Kernel Crash)或者宕机(Panic)等,往往具有发生速度快、处理时间压力大等特点,在本发明实施例中,通过采用内核层内预先指定的裸分区,可以提高异常日志的存储效率和完整性,并增强数据安全性。
进一步,所述操作系统为安卓操作系统;其中,所述非易失性存储空间为所述内核层内部预先指定的持久存储空间(Persistent Store),由于该持久存储空间同时具备内存的低时延字节寻址和磁盘的持久化特性,可以在采用安卓操作系统时,获得更好的存储安全性和持久性。进一步地,在内核异常事件中,如内核崩溃或者宕机等,往往具有发生速度快、处理时间压力大等特点,在本发明实施例中,通过采用内核层内预先指定的持久存储空间,还可以提高异常日志的存储效率和完整性。
进一步,如果所述异常事件为需要重启所述操作系统的异常事件,则所述内核层通过网络链接(Netlink)发送异常事件(EventInfo)消息通知给所述服务层,可以实现在内核空间与用户空间之间的通信,从而可以在内核层发生需要重启所述操作系统的异常事件时,通过发送异常事件消息,使得服务层能够获取准确信息以启动日志存储线程,以在服务层进行异常日志存储。
进一步,所述异常事件消息包括:事件时间、事件名称、模块名称、故障描述和附加信息;其中,所述附加信息包含:寄存器信息和/或堆栈信息,从而使得服务层能够获取准确信息,以启动日志存储线程进行异常日志存储。进一步地,用户空间进程还可以通过接收的故障描述和附加信息,同步抓取系统状态信息,从而使得服务层可以更准确的确定重启情况,还可以提高异常日志的存储质量。
进一步,所述异常事件消息还包括:内核层的核心记录(Kernel Log)信息,从而可以将系统基础记录一并发送至服务层,例如包括系统资源的获取、使用、释放等有关消息,从而在进行异常日志存储的过程中,可以提高对异常事件的判断准确性和日志存储准确性。
进一步,如果所述异常事件为不需要重启所述操作系统的异常事件,则将所述异常日志存储至磁盘,例如SD卡、内存(storage)卡等,从而可以在不必重启操作系统时,通过存储至磁盘,降低异常日志的存储复杂度。
附图说明
图1是本发明实施例中一种终端内核异常的日志存储方法的流程图;
图2是本发明实施例中一种操作系统的结构示意图;
图3是本发明实施例中另一种终端内核异常的日志存储方法的流程图;
图4是本发明实施例中一种内核空间与用户空间之间的通信示意图;
图5是本发明实施例中一种终端内核异常的日志存储装置的结构示意图。
具体实施方式
在现有技术中,对于内核层发生异常事件的情况,现有的日志存储方式不能满足需求。
具体而言,在现有技术中,是由服务层进程读取并保存日志到系统分区的,但是如果在内核层启动中就出现了内核异常,如内核崩溃(Kernel Crash)或者宕机(Panic)等,用户空间进程无法接收到内核层的消息,服务层也就无法接收到并保存这部分日志,导致难以进行研发分析。
在现有的一种改进方案中,在测试模式下可以由内核层基于系统转储(sysdump)机制存储故障信息,系统转储是一种转存储机制,又称为转储系统存储(Dump systemmemory),可以将发生异常事件时的内存信息、寄存器信息等有效信息转存为文件,以便于借助分析工具分析问题现场。
然而,现有的系统转储机制下存储文件过大,需要依赖安全数字(SecureDigital,SD)卡和插入通用串行总线(Universal Serial Bus,USB)才能实现数据的存储,导致该应用场景受限严重。
而在用户模式下通常并不会开启系统转储机制,而是直接对终端进行黑屏重启操作。具体而言,为了提高用户满意度,会选择用户对异常无感知的处理模式,并且考虑到多种终端并不会插有SD卡或USB,导致即使开启系统转储机制也会因场景不满足而无法使用,因此在现有的通常并不会开启系统转储机制下并不会开启系统转储机制。
在上述情况下,一旦需要对异常情况进行分析,就需要返厂在测试模式下复现故障问题并保留现场,一旦在测试模式下不能复现该异常问题,就难以进行分析维修。
在本发明实施例中,通过在内核层发生异常事件的情况下,通过终端的操作系统包含的服务层启动日志存储线程,可以启动异常日志存储;并且在异常事件为需要重启所述操作系统的异常事件时,可以将所述异常日志存储至所述内核层内预先指定的非易失性存储空间,从而利用非易失性存储空间对异常日志进行存储,实现在内核层发生异常事件导致重启操作系统的过程中,有效保存异常事件的异常日志,从而不必依赖返厂后的测试模式下复现故障问题,也能进行有效研发分析。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
参照图1,图1是本发明实施例中一种终端内核异常的日志存储方法的流程图。所述终端内核异常的日志存储方法可以包括步骤S11至步骤S12:
步骤S11:响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,其中,如果所述异常事件为需要重启所述操作系统的异常事件,则通过所述日志存储线程将所述异常日志存储至所述内核层内预先指定的非易失性存储空间;
步骤S12:在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。
在步骤S11的具体实施中,所述终端的操作系统至少包含内核层、服务层,响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程。
其中,所述异常事件可以包含需要重启所述操作系统的异常事件,还可以包含不需要重启所述操作系统的异常事件。
具体地,可以由内核层的各个模块根据异常的类型决定要不要重启操作系统,内核层的各个模块可以包括音频(Audio)、摄像(Camera)、显示(Display)等功能模块。
需要重启所述操作系统的异常事件可以为使得用户空间进程无法接收到内核层的消息的异常事件,例如可以包括内核崩溃(Kernel Crash)或者宕机(Panic)等。
参照图2,图2是本发明实施例中一种操作系统的结构示意图。
在现有的一种操作系统中,操作系统可以划分为应用(Application,APP)层、框架(Framework)层、服务(Native)层、驱动(Hardware Abstraction Layer,HAL)层和内核(Kernel)层。
其中,内核层属于内核空间,除内核层之外的其他层属于用户空间。
以安卓操作系统的启动过程为例,内核层模块通过日志应用程序接口(Application Program Interface,API)打印的日志,会保存在环形缓冲区中,当内核层启动完成后,会跳转到安卓(Android)的代码。服务层服务先启动,之后是框架层,最后是应用的加载,至此整个安卓系统启动完成。
在现有技术中,是由服务层进程读取并保存日志到系统分区的,但是如果在内核层启动中就出现了内核异常,如内核崩溃或者宕机等,用户空间进程无法接收到内核层的消息,服务层也就无法接收到并保存这部分日志,研发分析问题需要看寄存器信息、堆栈信息等,仅仅依靠现有的内核日志无法满足需求。
在具体实施中,日志存储线程是用于进行日志存储的线程,线程(thread)是操作系统能够进行运算调度的最小单位,线程可以被包含在进程之中并作为进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
在步骤S12的具体实施中,在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。
在具体实施中,非易失性存储空间是指电流关闭后所存储的数据不会消失的存储空间,可以是适当的集成于内核层的存储空间或外接的存储器。
非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存(flash)等。
在本发明实施例中,通过在内核层发生异常事件的情况下,通过终端的操作系统包含的服务层启动日志存储线程,可以启动异常日志存储;并且在异常事件为需要重启所述操作系统的异常事件时,可以将所述异常日志存储至所述内核层内预先指定的非易失性存储空间,从而利用非易失性存储空间对异常日志进行存储,实现在内核层发生异常事件导致重启操作系统的过程中,有效保存异常事件的异常日志,相比于将数据保存到内核层的环形缓冲区(Ring Buffer)中,一旦系统掉电重启,数据就会被新的一次开机记录(log)替代,采用本发明实施例的方案,掉电后也能够保持异常日志的内容,可以不必依赖返厂后的测试模式下复现故障问题,也能进行有效研发分析。
进一步地,所述非易失性存储空间可以为在所述内核层内预先指定的裸分区。
其中,裸分区又称为原始分区,可以是不被操作系统直接管理,可以由其他层(例如应用层、服务层)实现读写操作。
在本发明实施例中,所述非易失性存储空间为在所述内核层内预先指定的裸分区,由于裸分区未被格式化过,不被操作系统直接管理,而是可以由内核层实现读写操作,因此通过日志存储线程将所述异常日志存储至所述内核层内预先指定的裸分区,可以获得更好的存储共性,并增强数据的保护性。进一步地,在内核异常事件中,如内核崩溃(KernelCrash)或者宕机(Panic)等,往往具有发生速度快、处理时间压力大等特点,在本发明实施例中,通过采用内核层内预先指定的裸分区,可以提高异常日志的存储效率和完整性,并增强数据安全性。
进一步地,所述操作系统可以为安卓操作系统;其中,所述非易失性存储空间可以为所述内核层内部预先指定的持久存储空间(Persistent Store)。
在本发明实施例中,由于该持久存储空间同时具备内存的低时延字节寻址和磁盘的持久化特性,可以在采用安卓操作系统时,获得更好的存储安全性和持久性。进一步地,在内核异常事件中,如内核崩溃或者宕机等,往往具有发生速度快、处理时间压力大等特点,在本发明实施例中,通过采用内核层内预先指定的持久存储空间,还可以提高异常日志的存储效率和完整性。
需要指出的是,图1示出的终端内核异常的日志存储方法可以是在用户模式下实施的。
如前所述,用户模式下通常并不会开启系统转储机制,而是直接对终端进行黑屏重启操作,一旦需要对异常情况进行分析,就需要返厂在测试模式下复现故障问题并保留现场,一旦在测试模式下不能复现该异常问题,就难以进行分析维修。
在本发明实施例中,由于是通过所述服务层启动日志存储线程后,通过所述日志存储线程将所述异常日志存储至所述内核层内预先指定的非易失性存储空间的,可以在用户模式下利用非易失性存储空间对异常日志进行存储,可以不依赖于SD卡或USB,还可以不依赖于测试模式下复现故障,实现在内核层发生异常事件导致重启操作系统的过程中,有效保存异常事件的异常日志。
结合参照图3和图4,图3是本发明实施例中另一种终端内核异常的日志存储方法的流程图;图4是本发明实施例中一种内核空间与用户空间之间的通信示意图。
图3示出的另一种终端内核异常的日志存储方法可以包括步骤S301至步骤S310,以下对各个步骤进行说明。
在步骤S301中,开机。
在具体实施中,可以通过开机上电启动操作系统。
在步骤S302中,内核层初始化。
具体地,在启动操作系统后,可以对内核层进行初始化。
在步骤S303中,内核层发生异常事件。
所述异常事件可以包含需要重启所述操作系统的异常事件,还可以包含不需要重启所述操作系统的异常事件。
在步骤S304中,启动日志存储线程。
在具体实施中,可以是通过服务(Native)层启动日志存储线程的。
进一步地,响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程的步骤可以包括:如果所述异常事件为需要重启所述操作系统的异常事件,则所述内核层通过网络链接(Netlink)发送异常事件(EventInfo)消息通知给所述服务层。
参照图4,用户空间进程与内核空间的通信机制可以是通过网络链接机制实现的。内核层的各个模块可以包括音频(Audio)、摄像(Camera)、显示(Display)等功能模块。启动日志存储线程后可以保存至内核层内预先指定的非易失性存储空间,还可以保存至磁盘,如SD卡/内存卡。
更进一步地,所述网络链接机制可以采用套接字(socket)缓存队列。
具体而言,传统的进程间通信机制,均无法在用户态和内核态完成通信过程,而网络链接机制作为异步通信机制,可以通过使用套接字缓存队列,实现在用户空间和内核空间之间的通信过程。
在本发明实施例中,如果所述异常事件为需要重启所述操作系统的异常事件,则所述内核层通过网络链接发送异常事件消息通知给所述服务层,可以实现在内核空间与用户空间之间的通信,从而可以在内核层发生需要重启所述操作系统的异常事件时,通过发送异常事件消息,使得服务层能够获取准确信息以启动日志存储线程,以在服务层进行异常日志存储。
更进一步地,所述异常事件消息可以包括:事件时间、事件名称、模块名称、故障描述和附加信息;其中,所述附加信息包含:寄存器信息和/或堆栈信息;所述模块名称用于表示所述内核层中发生异常事件的模块。
其中,所述异常事件消息又可以称为故障事件结构化数据,可以表示如下:
struct EventInfo{
char time;
char event_name;
char module_name;
char event_msg;
char other_info;
}
其中,EventInfo{}可以用于表示异常事件,time可以用于表示异常事件发生时间,event_name可以用于表示异常事件的名称,例如可以采用预设的指示信息表示,module_name可以用于表示模块名称,所述模块名称可以用于表示所述内核层中发生异常事件的模块,event_msg可以用于表示异常事件的故障描述,other_info可以用于表示附加信息。
进一步地,所述附加信息可以包含:寄存器信息和/或堆栈信息。
在本发明实施例中,当故障发生时,内核层可以通过网络链接发送异常事件消息通知给用户空间进程,同时存储寄存器信息和/或堆栈信息。
在本发明实施例中,所述异常事件消息包括:事件时间、事件名称、模块名称、故障描述和附加信息;其中,所述附加信息包含:寄存器信息和/或堆栈信息,从而使得服务层能够获取准确信息,以启动日志存储线程进行异常日志存储。
进一步地,用户空间进程还可以通过接收的故障描述和附加信息,同步抓取系统状态信息,从而使得服务层可以更准确的确定重启情况,还可以提高异常日志的存储质量。
其中,所述系统状态信息例如可以包含中央处理器(Central Processing Unit,CPU)、存储器(memory)、输入输出(IO)等相关信息。
更进一步地,所述事件时间、事件名称、模块名称、故障描述可以分别预分配有预设的固定字节长度。
在本发明实施例的一种具体实施方式中,所述事件时间、事件名称、模块名称、故障描述可以表示如下:
char time[64],用于表示采用预设的64字节表示事件时间;
char event_name[256],用于表示采用预设的256字节表示事件名称;
char module_name[256],用于表示采用预设的256字节表示模块名称;
char event_msg[256],用于表示采用预设的256字节表示故障描述。
在本发明实施例的一种具体实施方式中,所述附加信息可以预分配有预设的固定字节长度。所述附加信息可以表示如下:
char other_info[1024],用于表示采用预设的1024字节表示附加信息。
在本发明实施例的另一种具体实施方式中,所述附加信息分配的可以是可变的字节长度。
在本发明实施例中,通过采用可变的字节长度表示附加信息,可以提高灵活性。
进一步地,所述异常事件消息还可以包括:内核层的核心记录(Kernel Log)信息。
在本发明实施例中,所述异常事件消息还包括:内核层的核心记录信息,从而可以将系统基础记录一并发送至服务层,例如包括系统资源的获取、使用、释放等有关消息,从而在进行异常日志存储的过程中,可以提高对异常事件的判断准确性和日志存储准确性。
在步骤S305中,处理异常事件。
在具体实施中,可以由内核层的各个模块和/或服务层处理异常事件。
在步骤S306中,读取并保存异常日志。
在具体实施中,可以通过服务层读取并保存之前保存的日志,例如可以是基于之前将异常日志存储至磁盘的步骤,对保存在磁盘中的日志进行读取并保存,还可以是基于之前将异常日志存储至内核层内预先指定的非易失性存储空间的步骤,对保存在非易失性存储空间中的日志进行读取并保存。
具体而言,待重启完成后,可以由日志存储线程去特定的存储区域读取上一次异常重启的数据,从而实现用户空间进程将此部分数据读取出来,保存到文件中。
在步骤S307中,确定是否重启操作系统,如果判断结果为是,则转为执行步骤S309,如果判断结果为否,则转为执行步骤S308。
具体地,需要重启所述操作系统的异常事件可以为使得用户空间进程无法接收到内核层的消息的异常事件,例如可以包括内核崩溃(Kernel Crash)或者宕机(Panic)等。
进一步地,可以由内核层的各个模块根据异常的类型决定要不要重启操作系统。
在步骤S308中,将异常日志存储至磁盘。
进一步地,如果所述异常事件为不需要重启所述操作系统的异常事件,则通过所述日志存储线程将所述异常日志存储至磁盘。
在本发明实施例中,如果所述异常事件为不需要重启所述操作系统的异常事件,则将所述异常日志存储至磁盘,例如SD卡、内存(storage)卡等,从而可以在不必重启操作系统时,通过存储至磁盘,降低异常日志的存储复杂度。
在步骤S309中,将异常日志存储至内核层内预先指定的非易失性存储空间。
具体地,有关存储至内核层内预先指定的非易失性存储空间的更多详细内容请参照前文以及图1中的步骤描述进行执行,此处不再赘述。
在步骤S310中,重启操作系统。
在具体实施中,有关步骤S301至步骤S310的更多详细内容请参照前文以及图1中的步骤描述描述进行执行,此处不再赘述。
在本发明实施例的一种具体实施方式中,有关操作系统的重启(或启动),可以包含下述内容:采用固化在硬件中的一段代码,如无盘启动ROM接口(Boot ROM)等,其一般是固定的,用于检测基本的硬件是否存在,比如检测内嵌式存储器标准规格(Embedded MultiMedia Card,eMMC)是否存在,并在存在时把启动引导程序从EMMC拷贝到静态随机存取存储器(Static Random-Access Memory,SRAM),启动系统,然后进入启动引导程序。
在一种具体实施方式中,安卓系统的启动引导程序(bootloader)采用小内核(little kernel,LK),用来启动安卓系统。
然后,启动引导程序初始化完成后跳转到操作系统(Linux)内核的内核启动(start_kernel)函数,此函数最后产生了内核初始化(kernel_init)和进程(kthreadd),内核初始化(kernel_init)后面会从内核空间跳转到用户空间,变成用户空间的初始化(init)进程,PID=1,而进程(kthreadd(PID=2))是内核进程,专门用来监听创建内核进程的请求,其维护对应的链表,如果有创建内核进程的需求,就会在链表上创建。
此外,作为系统中唯一一个不使用分叉(fork)创建的进程(swapper(PID=0)),创建了内核初始化(kernel_init)和进程(kthreadd),进程swapper也叫空闲进程(idle进程),在系统处于空闲状态的时候运行。
需指出,当内核初始化(kernel_init)转变为用户空间的初始化(init)进程以后,会在安卓系统中创建重要进程,即孵化进程(Zygote),该进程会创建安卓所需要的所有进程。
参照图5,图5是本发明实施例中一种终端内核异常的日志存储装置的结构示意图。所述终端的操作系统可以包含内核层、服务层,所述终端内核异常的日志存储装置可以包括:
日志存储线程启动模块51,用于响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,其中,如果所述异常事件为需要重启所述操作系统的异常事件,则通过所述日志存储线程将所述异常日志存储至所述内核层内预先指定的非易失性存储空间;
重启后保存模块52,用于在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。
在具体实施中,上述装置可以对应于终端中具有数据处理功能的芯片;或者对应于终端中包括具有数据处理功能芯片的芯片模组,或者对应于终端。
关于该终端内核异常的日志存储装置的原理、具体实现和有益效果请参照前文所述的关于终端内核异常的日志存储方法的相关描述,此处不再赘述。
本发明实施例还提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述方法的步骤。所述可读存储介质可以是计算机可读存储介质,例如可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器,还可以包括光盘、机械硬盘、固态硬盘等。
具体地,在本发明实施例中,所述应用处理器以及通信处理器可以为中央处理单元(central processing unit,简称CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,简称DSP)、专用集成电路(application specificintegrated circuit,简称ASIC)、现成可编程门阵列(field programmable gate array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,简称ROM)、可编程只读存储器(programmable ROM,简称PROM)、可擦除可编程只读存储器(erasable PROM,简称EPROM)、电可擦除可编程只读存储器(electricallyEPROM,简称EEPROM)或闪存。易失性存储器可以是随机存取存储器(random accessmemory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,简称RAM)可用,例如静态随机存取存储器(staticRAM,简称SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronousDRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(doubledata rate SDRAM,简称DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,简称ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,简称DR RAM)。
本发明实施例还提供了一种终端,包括存储器和应用处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,所述应用处理器运行所述计算机程序时执行上述方法的步骤。所述终端包括但不限于手机、计算机、平板电脑、可穿戴装置等终端设备。
具体地,本申请实施例中的终端可以指各种形式的用户设备(user equipment,简称UE)、接入终端、用户单元、用户站、移动站、移动台(mobile station,简称MS)、远方站、远程终端、移动设备、用户终端、终端设备(terminal equipment)、无线通信设备、用户代理或用户装置。终端设备还可以是蜂窝电话、无绳电话、会话启动协议(Session InitiationProtocol,简称SIP)电话、无线本地环路(Wireless Local Loop,简称WLL)站、个人数字处理(Personal Digital Assistant,简称PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,未来5G网络中的终端设备或者未来演进的公用陆地移动通信网络(Public Land Mobile Network,简称PLMN)中的终端设备等,本申请实施例对此并不限定。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,表示前后关联对象是一种“或”的关系。
本申请实施例中出现的“多个”是指两个或两个以上。
本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
关于上述实施例中描述的各个装置、产品包含的各个模块/单元,其可以是软件模块/单元,也可以是硬件模块/单元,或者也可以部分是软件模块/单元,部分是硬件模块/单元。例如,对于应用于或集成于芯片的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于芯片模组的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于芯片模组的同一组件(例如芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于芯片模组内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现;对于应用于或集成于终端的各个装置、产品,其包含的各个模块/单元可以都采用电路等硬件的方式实现,不同的模块/单元可以位于终端内同一组件(例如,芯片、电路模块等)或者不同组件中,或者,至少部分模块/单元可以采用软件程序的方式实现,该软件程序运行于终端内部集成的处理器,剩余的(如果有)部分模块/单元可以采用电路等硬件方式实现。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (11)

1.一种终端内核异常的日志存储方法,其特征在于,所述终端的操作系统包含内核层、服务层,所述方法包括:
响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,其中,如果所述异常事件为需要重启所述操作系统的异常事件,则通过所述日志存储线程将异常日志存储至所述内核层内预先指定的非易失性存储空间;
在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。
2.根据权利要求1所述的方法,其特征在于,所述非易失性存储空间为在所述内核层内预先指定的裸分区。
3.根据权利要求1所述的方法,其特征在于,所述操作系统为安卓操作系统;其中,所述非易失性存储空间为所述内核层内部预先指定的持久存储空间。
4.根据权利要求1所述的方法,其特征在于,响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,包括:
如果所述异常事件为需要重启所述操作系统的异常事件,则所述内核层通过网络链接发送异常事件消息通知给所述服务层。
5.根据权利要求4所述的方法,其特征在于,所述异常事件消息包括:
事件时间、事件名称、模块名称、故障描述和附加信息;
其中,所述附加信息包含:寄存器信息和/或堆栈信息;
所述模块名称用于表示所述内核层中发生异常事件的模块。
6.根据权利要求5所述的方法,其特征在于,所述异常事件消息还包括:
内核层的核心记录信息。
7.根据权利要求5所述的方法,其特征在于,
所述事件时间、事件名称、模块名称、故障描述分别预分配有预设的固定字节长度;
和/或,所述附加信息分配的是可变的字节长度。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述异常事件为不需要重启所述操作系统的异常事件,则通过所述日志存储线程将所述异常日志存储至磁盘。
9.一种终端内核异常的日志存储装置,其特征在于,所述终端的操作系统包含内核层、服务层,所述装置包括:
日志存储线程启动模块,用于响应于所述内核层发生异常事件,通过所述服务层启动日志存储线程,其中,如果所述异常事件为需要重启所述操作系统的异常事件,则通过所述日志存储线程将异常日志存储至所述内核层内预先指定的非易失性存储空间;
重启后保存模块,用于在重启操作系统后,通过所述日志存储线程在所述非易失性存储空间读取并保存所述异常日志。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1至8任一项所述的终端内核异常的日志存储方法的步骤。
11.一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机程序,其特征在于,所述处理器运行所述计算机程序时执行权利要求1至8任一项所述的终端内核异常的日志存储方法的步骤。
CN202311283241.7A 2023-09-28 2023-09-28 终端及其内核异常的日志存储方法及装置、可读存储介质 Pending CN117215840A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311283241.7A CN117215840A (zh) 2023-09-28 2023-09-28 终端及其内核异常的日志存储方法及装置、可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311283241.7A CN117215840A (zh) 2023-09-28 2023-09-28 终端及其内核异常的日志存储方法及装置、可读存储介质

Publications (1)

Publication Number Publication Date
CN117215840A true CN117215840A (zh) 2023-12-12

Family

ID=89042383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311283241.7A Pending CN117215840A (zh) 2023-09-28 2023-09-28 终端及其内核异常的日志存储方法及装置、可读存储介质

Country Status (1)

Country Link
CN (1) CN117215840A (zh)

Similar Documents

Publication Publication Date Title
WO2017059721A1 (zh) 一种信息存储方法和装置、及服务器
CN104185836A (zh) 用于在系统改变之后验证计算设备的适当操作的方法和系统
CN111158945B (zh) 内核故障处理方法、装置、网络安全设备和可读存储介质
CN112988284A (zh) 应用程序启动方法、装置、计算机设备和存储介质
CN112214388A (zh) 内存监控方法、装置、设备及计算机可读存储介质
CN108364670B (zh) 读写压力测试方法、装置、设备及存储介质
CN113656107A (zh) 移动应用的加载方法、装置及电子设备
US7124412B2 (en) Extensible BIOS error log
CN115407943A (zh) 一种内存转储文件生成方法、装置、设备及可读存储介质
CN116340053A (zh) 系统崩溃的日志处理方法、装置、计算机设备和介质
US11023335B2 (en) Computer and control method thereof for diagnosing abnormality
CN115981892A (zh) 日志读取方法、装置、电子设备及存储介质
CN117632570B (zh) 基于多核异构soc的多操作系统诊断方法、装置和系统
CN111522706A (zh) 前端应用的页面异常的监控方法及其装置
CN110764962B (zh) 日志处理方法和装置
CN117785440A (zh) 异常进程处理方法和相关装置、设备、存储介质
CN115599618B (zh) 寄存器动态改配验证方法、装置、存储介质和处理器
CN117215840A (zh) 终端及其内核异常的日志存储方法及装置、可读存储介质
CN116149941A (zh) 服务器部件的监控方法、装置、服务器及存储介质
CN115617479A (zh) Bios日志存储方法及计算设备
CN113900934A (zh) 多镜像混合刷新测试方法、系统、终端及存储介质
CN111782515A (zh) web应用的状态检测方法、装置、服务器和存储介质
CN114253618B (zh) 基于不同厂商的bios修改方法、装置、计算机设备及存储介质
CN116578446B (zh) 虚拟机备份方法、装置、系统、电子设备及存储介质
WO2023201648A1 (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