日志获取方法及电子设备与流程
未命名
07-23
阅读:87
评论:0

1.本技术实施例涉及终端设备领域,尤其涉及一种日志获取方法及电子设备。
背景技术:
2.随着电子设备的普及和发展,具有触摸屏的电子设备逐渐进入人们的生活。现有的电子设备在使用过程中会由于一些关键进程运行异常导致电子设备的系统故障,从而使电子设备出现黑屏、设备界面冻结等问题。例如,电子设备启动或运行过程中出现黑屏问题。再如,电子设备在关机时出现冻屏问题使得电子设备无法正常关机等。在检测到电子设备的系统出现黑屏、设备界面冻结等问题时,通过相关日志信息可以进行故障定位。因此,如何精准地获取与问题相关的日志信息是亟待解决的技术问题。
技术实现要素:
3.为了解决上述技术问题,本技术提供一种日志获取方法及电子设备。在该方法中,电子设备在检测到用户针对电源键输入按压操作,且按压时长达到指定时长时,执行日志生成操作以及日志转储操作,将不同阶段的日志存储在不同的裸分区中可以提高故障定位的效率。换句话说,电子设备所处阶段不同,对应存储日志的区域也不相同,如此可以使开发人员快速有效的解决故障。
4.第一方面,本技术实施例提供一种故障检测方法。该方法包括:响应于用户对电源键的按压操作,获取按压操作的按压时长;在按压时长超出指定时长的情况下,获取与按压操作相关的目标日志;如果电子设备所处阶段为开机阶段,则将目标日志转储至第一裸分区,第一裸分区用于存储电子设备在开机阶段生成的日志。这样,电子设备在检测到电源被长按时,将其获取的目标日志转储到对应的位置,可以使开发人员能够快速有效的解决故障。
5.根据第一方面,如果电子设备所处阶段是非开机阶段,则将目标日志转储至第二裸分区,第二裸分区用于存储电子设备在运行阶段或关机阶段生成的日志。这样,电子设备所处阶段不同,对应存储日志的区域也不相同,在一定程度上可以加快故障解决的速率。
6.根据第一方面,或者以上第一方面的任意一种实现方式,将目标日志转储至第二裸分区,包括:确定目标日志的大小,以及确定第二裸分区可存储空间的大小;若目标日志的大小小于第二裸分区可存储空间的大小,更新游标的指示位置,游标用于指示日志写入的位置;按照游标指示的位置将目标日志写入第二裸分区。
7.根据第一方面,或者以上第一方面的任意一种实现方式,若目标日志的大小大于第二裸分区可存储空间的大小,则确定当前时刻第二裸分区中最先被写入的日志,最先被写入的日志对应的存储区域为目标区域;将目标日志写入至目标区域。这样,按照日志产生先后顺序对应存储日志,可以保证日志的顺序,进而提高用户的使用体验。
8.根据第一方面,或者以上第一方面的任意一种实现方式,获取与按压操作相关的目标日志,包括:获取内核日志和引导程序日志,并将内核日志和引导程序日志作为目标日
志,内核日志和引导程序日志是电子设备处于开机阶段时生成。这样,开发人员通过内核日志和引导程序日志快速定位引起开机阶段故障的原因。
9.根据第一方面,或者以上第一方面的任意一种实现方式,获取与按压操作相关的目标日志,包括:获取内核日志和系统状态日志,并将内核日志和系统状态日志作为目标日志,内核日志和系统状态日志是电子设备处于非开机阶段时生成。这样,开发人员通过内核日志和系统状态日志快速定位引起非开机阶段故障的原因。
10.根据第一方面,或者以上第一方面的任意一种实现方式,电子设备包括高速缓冲存储器,获取内核日志,包括:从高速缓冲存储器中获取内核流水日志;对内核流水日志进行明文转换,得到内核日志。这样,电子设备对内核流水日志进行明文转换可以避免出现乱码。
11.根据第一方面,或者以上第一方面的任意一种实现方式,高速缓冲存储器利用环形缓冲区实现对内核流水日志的缓存,环形缓冲区通过头指针和尾指针实现对内存的寻址;从高速缓冲存储器中获取内核流水日志,包括:从头指针指向尾指针的方向依次读取环形缓冲区中的内核流水日志。
12.根据第一方面,或者以上第一方面的任意一种实现方式,系统状态日志至少包括时间戳、电子设备所处阶段、内存状态以及进程状态。
13.示例性的,内存状态可以包括高内存状态和低内存状态。
14.示例性的,进程状态可以包括睡眠状态、可执行状态、不可中断的睡眠状态、暂停状态或跟踪状态以及僵尸状态.
15.根据第一方面,或者以上第一方面的任意一种实现方式,第二裸分区存储的数据包括元数据和日志数据,元数据用于确定写入第二裸分区的日志数据是否合法,元数据至少包括幻数、校验码、游标以及日志列表。
16.第二方面,本技术实施例提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;电源键;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:响应于用户对电源键的按压操作,获取按压操作的按压时长;在按压时长超出指定时长的情况下,获取与按压操作相关的目标日志;如果电子设备所处阶段为开机阶段,则将目标日志转储至第一裸分区,第一裸分区用于存储电子设备在开机阶段生成的日志。
17.根据第二方面,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:如果电子设备所处阶段是非开机阶段,则将目标日志转储至第二裸分区,第二裸分区用于存储电子设备在运行阶段或关机阶段生成的日志。
18.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:确定目标日志的大小,以及确定第二裸分区可存储空间的大小;若目标日志的大小小于第二裸分区可存储空间的大小,更新游标的指示位置,游标用于指示日志写入的位置;按照游标指示的位置将目标日志写入第二裸分区。
19.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:若目标日志的大小大于第二裸分区可存储空间的大小,则确定当前时刻第二裸分区中最先被写入的日志,最先被写入的日志对应
的存储区域为目标区域;将目标日志写入至目标区域。
20.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:获取内核日志和引导程序日志,并将内核日志和引导程序日志作为目标日志,内核日志和引导程序日志是电子设备处于开机阶段时生成。
21.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:获取内核日志和系统状态日志,并将内核日志和系统状态日志作为目标日志,内核日志和系统状态日志是电子设备处于非开机阶段时生成。
22.根据第二方面,或者以上第二方面的任意一种实现方式,电子设备包括高速缓冲存储器,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:从高速缓冲存储器中获取内核流水日志;对内核流水日志进行明文转换,得到内核日志。
23.根据第二方面,或者以上第二方面的任意一种实现方式,高速缓冲存储器利用环形缓冲区实现对内核流水日志的缓存,环形缓冲区通过头指针和尾指针实现对内存的寻址;当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:从头指针指向尾指针的方向依次读取环形缓冲区中的内核流水日志。
24.根据第二方面,或者以上第二方面的任意一种实现方式,系统状态日志至少包括时间戳、电子设备所处阶段、内存状态以及进程状态。
25.根据第二方面,或者以上第二方面的任意一种实现方式,第二裸分区存储的数据包括元数据和日志数据,元数据用于确定写入第二裸分区的日志数据是否合法,元数据至少包括幻数、校验码、游标以及日志列表。
26.第三方面,本技术实施例提供一种芯片。该芯片包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行权利第一方面以及第一方面中任意一项的故障检测方法。
27.第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
28.第四方面,本技术实施例提供一种计算机可读存储介质。该计算机可读存储介质包括计算机程序,其特征在于,当计算机程序在电子设备上运行时,使得电子设备执行第一方面以及第一方面中任意一项故障检测方法。
29.第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
30.图1a~1c为本技术实施例提供的一种应用场景示意图;
31.图2a~2d为本技术实施例提供的另一应用场景示意图;
32.图3a~3b为本技术实施例提供的又一应用场景示意图;
33.图4为本技术实施例提供的电子设备所处阶段和相应故障的分类示意图;
34.图5为本技术实施例示出的电子设备的结构示意图;
35.图6为本技术实施例示出的电子设备的软件结构示意图;
36.图7为本技术实施例提供的一种日志获取方法的流程示意图;
37.图8为本技术实施例提供的日志获取方法的过程示意图;
38.图9为本技术实施例提供的日志获取方法中长按键裸分区存储日志的格式示例图;
39.图10为本技术实施例提供的日志获取方法中长按键裸分区存储日志的流程示意图;
40.图11为本技术实施例提供的日志获取方法中日志的循环老化示意图;
41.图12为本技术实施例提供的日志获取方法中不执行日志生成操作和日志转储操作的情况示意图。
具体实施方式
42.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
44.还应当理解,在本技术实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
45.本技术实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
46.在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
47.在本技术实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
48.如图1a~1c为示例性的示出一种应用场景示意图,请参照图1a,电子设备处于开机阶段时,如果用户长按电源键101,则电子设备可以从关机状态切换至开机状态。具体的,当电子设备设置有密码/指纹锁时,电子设备成功开机后可以进入如图1b所示的锁屏显示
界面。另外,如果电子设备未设置有密码/指纹锁,电子设备开机后则可以直接进入如图1c所示的桌面显示界面。
49.另外,如果电子设备开机过程中发生故障,电子设备的屏幕无法从图1a切换至图1b,或者也无法从图1a切换至图1c,即电子设备可能保持在黑屏状态。换句话说,在开机阶段如果电子设备发生不开机故障,其屏幕状态保持不变。
50.如图2a~2d为示例性的示出另一种应用场景示意图,请参照图2a,电子设备处于关机阶段时,用户长按电源键101,且长按时长超出一定时长后,电子设备的显示界面可以从图2a跳转至图2b。通过图2b看出,用户长按电源键后电子设备可以弹出“重启”控件102和“关机”控件103。当用户点击“关机”控件103时,电子设备的显示界面从图2b界面跳转至图2c。此时,如果用户触发图2c中的“点击关机”控件,正常情况下电子设备可以进入如图2d所示的状态。
51.另外,如果电子设备在关机阶段发生故障,则电子设备无法从图2a切换至图2d,即在关机过程中,电子设备可能卡在图2a所示的界面而无法进入关机状态。或者在关机阶段电子设备也可能卡在图2b或者图2c所示的界面而无法进入关机状态。
52.如图3a~3b为示例性的示出又一种应用场景示意图,电子设备处于运行阶段时,用户可以根据个人需求触发电子设备中的应用程序。并且,不同应用程序可以包括不同的控件,在应用程序运行过程中,用户可以通过点击不同的控件来使电子设备实现不同的功能。如图3a所示是视频类应用程序的显示界面,在该视频类应用程序下用户可以观看直播,也可以刷视频、送礼物以及发评论等。
53.另外,电子设备在运行阶段如果发生故障,则可能出现应用程序卡死现象。具体的,应用程序发生卡死现象时,电子设备的界面上可以显示有图3b所示的界面,此时电子设备所处的状态可以称作是冻屏状态。在冻屏状态下,用户无法很好的对电子设备进行控制。
54.通过图3b知道,应用程序发生卡死现象时,电子设备的显示界面可以弹出“应用程序无响应,要将其关闭吗”的提示信息。此时,用户如果想等待应用程序的恢复,则可以点击“等待”按钮。另外,如果用户不想等待,则可以通过点击“确定”按钮,关闭电子设备正在显示的应用程序。
55.为了清楚的理解电子设备发生故障的情况,本技术实施例给出了如图4所示的示图,从图4可以看出电子设备主要包括三个阶段,这三个阶段分别是开机阶段,运行阶段和关机阶段。其中,开机阶段主要是电子设备从关机状态切换为开机状态时所处的阶段;运行阶段指的是电子设备运行应用程序时所处的阶段;关机阶段指的是电子设备从开机状态切换为关机状态时所处的阶段。
56.另外,电子设备所处阶段不同,其对应的故障也不相同。具体的,在开机阶段,如果电子设备发生故障,则此时的故障可以称作是不开机故障;在运行阶段,如果电子设备发生故障,则此时的故障可以称作是冻屏故障;在关机阶段,如果电子设备发生故障,则此时的故障可以称作是关机卡死故障。
57.电子设备在发生故障时,用户通常会通过长按电源键来使电子设备恢复正常。然而,长按电源键却无法从根本上解决故障,主要原因是长按电源键虽然可能会使电子设备的系统重启,但是故障却没有得到根本的解决。换句话说,在电子设备发生故障时,用户长按电源键可能会触发系统的重启,但是开发人员在定位导致故障的问题时无法准确找到与
故障相关的日志。如此,在很大程度的影响开发人员对故障的解决。
58.因此,为了准确的对故障进行定位和解决,本技术实施例在检测到用户针对电源键输入按压操作,且按压时长超出指定时长时可以生成指定格式的目标日志。并且,电子设备处在不同阶段,对应存储日志的位区域也不相同,如此可以在一定程度上可以提高故障分析的有效性和实时性。
59.本技术实施例中的日志获取方法可应用于如图5所示的电子设备中,图5所示的电子设备100可以为终端,也可以称为终端设备,终端可以为蜂窝电话(cellularphone),平板电脑(pad)、可穿戴设备或物联网设备等具有摄像头的设备,本技术不做限定。需要说明的是,电子设备100的结构示意图可以适用于图1a至图3b中的电子设备。
60.进一步需要说明的是,电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图5中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
61.电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universalserialbus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentificationmodule,sim)卡接口195等。其中传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器180,磁传感器180,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
62.可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
63.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,ap),调制解调处理器,图形处理器(graphicsprocessingunit,gpu),图像信号处理器(imagesignalprocessor,isp),控制器,存储器,视频编解码器,数字信号处理器(digitalsignalprocessor,dsp),基带处理器,和/或神经网络处理器(neural-networkprocessingunit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
64.其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
65.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。usb接口130是符合usb标准规范的接口,具体可以是miniusb接口,microusb接口,usbtypec接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
66.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,
也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
67.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
68.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
69.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoiseamplifier,lna)等。无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocalareanetworks,wlan)(如无线保真(wirelessfidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(globalnavigationsatellitesystem,gnss),调频(frequencymodulation,fm),近距离无线通信技术(nearfieldcommunication,nfc),红外技术(infrared,ir)等无线通信的解决方案。
70.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
71.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
72.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight-emittingdiode,oled)。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
73.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(chargecoupleddevice,ccd)或互补金属氧化物半导体(complementarymetal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
74.外部存储器接口120可以用于连接外部存储卡,例如microsd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
75.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区
可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs)等。
76.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
77.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
78.触摸传感器,也称“触控面板”。触摸传感器可以设置于显示屏194,由触摸传感器与显示屏194组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
79.按键190包括开机键(或称电源键),音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。其中,按下电源键可以使手机息屏或亮屏。并且当按下电源键的时长超出一定时长时,电子设备100可以进入重启状态。
80.马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。
81.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
82.电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(androidruntime)和系统库,以及内核层。
83.应用程序层可以包括一系列应用程序包。
84.如图6所示,应用程序层可以包括相机,图库,日历,通话,地图,wlan,蓝牙,音乐,视频,短信息等应用程序。应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramminginterface,api)和编程框架。应用程序框架层包括一些预先定义的函数。如图6所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
85.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
86.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
87.内核层是硬件和上述软件层之间的层。内核层至少包含显示驱动,电源键驱动、日志获取模块、场景检测模块以及音频驱动模块等。其中,该硬件可以包括摄像头、显示屏,麦克风,处理器,以及存储器等器件。
88.其中,电源键驱动用于接收电源键传输的按下指示信息和抬起指示信息,并根据按下指示信息和抬起指示信息获取到长按时长。另外,电源键驱动还可以用于确定长按时长是否超出指定时长。
89.日志获取模块用于从高速缓冲存储器(cache)中获取流水日志,并对流水日志进行处理和整合,得到目标日志。例如,电子设备在运行阶段接收到长按指示信息,日志获取模块可以从高速缓冲存储器中获取内核流水日志,并对内核流水日志进行明文转换。然后将转换后的内核日志和系统日志进行整合可以得到目标日志。
90.场景检测模块用于对电子设备所处阶段进行检测,通过上述介绍可以知道,电子设备所处阶段可以包括开机阶段、运行阶段以及关机阶段,每个阶段可以对应有唯一的阶段标识。例如,场景检测模块检测到电子设备当前所处阶段为开机阶段,则对应的阶段标识为1。又如,场景检测模块检测到电子设备当前所处阶段为运行阶段,则对应的阶段标识为2。
91.可以理解的是,图6示出的应用程序框架层、系统库与运行时层等包含的部件,并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
92.在本技术实施例中,检测到用户针对电源键输入按压操作时,电子设备可以获取长按时长,并在长按时长超出指定时长时,执行日志生成操作。并且,电子设备所处阶段不同,存储日志的区域也不相同。如此,在一定程度上可以提高故障解决的效率。
93.如图7所示,本技术实施例提供的一种日志获取方法,该日志获取方法可以包括下述的步骤s101至步骤s115。
94.步骤s101:电源键向电源键驱动发送按下指示信息。
95.本技术实施例中,用户针对电源键输入按下操作时,电源键可以发送按下指示信息至电源键驱动。其中,按下指示信息用于告知电源键驱动用户针对电源键输入了按下操作。
96.作为一种方式,电源键驱动在接收到电源键传输的按下指示信息时可以启动长按计时,即进入步骤s102。
97.步骤s102:电源键驱动启动长按计时。
98.在一些实施方式中,电源键驱动可以包括定时器,电源键驱动在接收到按下指示信息时,其可以启动该定时器,即定时器开始执行计时操作。
99.在另一些实施方式中,按下指示信息可以包括按下操作的触发时间,该按下操作的触发时间可以是用户针对电源键输入按下操作的时间。电源键驱动可以将该触发时间作为按下时间。
100.步骤s103:电源键驱动接收电源键发送的抬起指示信息。
101.本技术实施例中,用户针对电源键输入抬起操作时,电源键可以发送抬起指示信息至电源键驱动。其中,抬起指示信息用于告知电源键驱动用户针对电源键输入了抬起操作。
102.作为一种方式,电源键驱动在接收到电源键传输的抬起指示信息时可以结束计时,得到长按时长,即进入步骤s104。
103.步骤s104:电源键驱动结束计时,得到长按时长。
104.通过上述介绍知道,电源键驱动可以包括定时器,电源键驱动在接收到按下指示信息时,可以启动该定时器。另外,电源键驱动在接收到电源键传输的抬起指示信息时,其可以结束计时,此时定时器中的计时可以作为长按时长。例如,定时器的计时为6s,则得到的长按时长为6s。
105.在另一些实施方式中,抬起指示信息可以包括抬起操作的触发时间,该抬起操作的触发时间可以是用户针对电源键输入抬起操作的时间。电源键驱动可以将该触发时间作为抬起时间。
106.在此基础上,电源键驱动可以通过抬起时间和按下时间得到长按时长。具体的,长按时长可以等于抬起时间减去按下时间。作为一个示例,按下时间为18:30:05,抬起时间为18:30:11,则长按时长为6s。
107.步骤s105:电源键确定长按时长是否达到指定时长。
108.在一些实施方式中,电源键驱动在获取到长按时长时,其可以确定该长按时长是否超出指定时长,如果长按时长超出指定时长,电源键驱动则可以向日志获取模块发送超时指示信息。另外,如果长按时长未超出指定时长,电源键驱动则可以不向日志获取模块发送消息,并继续对下一次的按压操作进行监测。
109.作为一个示例,指定时长可以为6s,电源键驱动获取到长按时长为6s,通过对比可以知道,此时的长按时长达到了指定时长,故电源键驱动可以向日志获取模块发送超时指示信息。
110.为了更清楚的理解日志生成的过程,本技术实施例给出如图8所示的示例图。通过图8可以看出,电源键中断上下文可以包括中断上文和中断下文。其中,中断上文用于获取长按电源键的时长,并确定该长按时长是否达到指定时长。如果长按时长达到指定时长,则进入中断下文。其中,中断下文用于执行日志生成操作和日志转储操作。另外,该示例中定时器为6s定时器。
111.具体的,在接收到按下指示信息时,中断上文可以触发6s定时器开始工作,此时6s定时器的计时为0s。6s定时器在工作过程中,如果其计时未达到6s便接收到抬起指示信息,中断上文则可以取消6s定时器,并将6s定时器置零。换句话说,6s定时器被启动之后如果计时未达到6s,电源键便被抬起,则取消计时。
112.另外,如果6s定时器计时达到6s接收到抬起指示信息,或者是6s定时器的计时达到6s时仍未接收到抬起指示信息,则可以触发日志生成操作,即进入中断下文,此时中断下文可以执行日志生成操作。另外,在长按时长达到10s时,若电源键仍未被抬起,则电子设备进入重启阶段。
113.步骤s106:电源键驱动向日志获取模块发送超时指示信息。
114.本技术实施例中,超时指示信息用于告知日志获取模块用户长按电源键的时长达到了指定时长。
115.步骤s107:日志获取模块获取日志。
116.在一些实施方式中,日志获取模块如果接收到电源键驱动传输的超时指示信息,
则其可以执行日志生成操作。具体的,日志获取模块可以从高速缓冲存储器中获取日志数据,并基于这些日志数据生成目标日志。另外,日志获取模块也可以获取电子设备系统的状态信息,并由这些信息构成目标日志。
117.本技术实施例中,电子设备当前所处阶段不同,则对应获取的目标日志也不相同。
118.作为一种方式,电子设备当前所处阶段为运行阶段/关机阶段时,日志获取模块获取的目标日志可以包括内核日志(kmsg日志)和系统状态日志。
119.作为另一种方式,电子设备当前所处阶段为开机阶段时,日志获取模块获取的目标日志可以包括引导程序日志(bootloader日志)和内核日志(kmsg日志)。
120.在一些实施方式中,系统状态日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件,其通常是txt文档。另外,系统状态日志可以包括当前时间戳(tick秒数)、当前所处阶段、内存状态以及进程状态等。
121.其中,当前时间戳可以是接收到长按操作的时间。例如,当前时间戳ticktime为1620401863。
122.另外,当前所处阶段可以包括运行阶段和关机阶段。例如,当前阶段stage为0x5fffffff,stage的值不同则表示电子设备所处的阶段也不相同。
123.内存状态包括高内存、低内存等。本技术实施例中,内存包括可用内存和虚拟内存(swap)。另外,内存状态也可以包括可用内存的大小和虚拟内存的大小。例如,可用内存(memory avaliable)为3981136kb;虚拟内存(swap free)为6291288kb。
124.进程状态包括可中断的睡眠状态(s)、可执行状态(r)、不可中断的睡眠状态(d)、暂停状态或跟踪状态(t)以及僵尸状态(z)等。
125.另外,进程状态也可以包括进程的标识、进程占用内存大小以及进程的名称。本技术实施例中,进程状态的格式可以为pid(进程标识);stat(进程状态);rss(进程占用内存);pname(进程名称)。例如,pid;stat;rss;pname分别是481;s;2464;init。又如,pid;stat;rss;pname分别是507;s;6768;logd。
126.在一些实施方式中,内核日志可以是电源键被长按时整个高速缓冲存储器(cache)中的日志,内核日志也可以称作是linux内核日志。内核日志是进行故障诊断的重要依据,内核日志记录了电子设备在运行过程中,内核自身以及所运行模块、进程等性能状况的信息。通过对内核日志进行分析,开发人员可以从中挖掘出与电子设备状态相关的信息,进而定位出故障的位置,并快速有效的解决故障。
127.在一些实施方式中,引导程序日志可以是电子设备的系统在启动过程中产生的日志。电子设备的系统在启动时,可以先启动预设的引导程序bootloader,由引导程序引导系统的开启。bootloader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
128.在android设备中,bootloader是在设备开机后,kernel运行之前运行,可以初始化硬件、建立内存空间映射,为装载kernel准备好运行环境。本技术实施例中,引导程序日志可以包括运行时产生的错误信息、状态信息、调试信息、执行时间信息中的至少一种。
129.在一些实施方式中,日志获取模块可以调用原始接口获取高速缓冲存储器中最新的内核流水日志。并且,在获取最新的内核流水日志时,日志获取模块可以先确定待获取内
核日志的大小,然后基于该大小从高速缓冲存储器中获取内核流水日志。换句话说,日志获取模块在从高速缓冲存储器中获取内核日志时,可以获取最新的指定存储大小的内核流水日志。
130.本技术实施例中,高速缓冲存储器可以利用ringbuffer(环形缓冲区)对内核流水日志进行缓存。ringbuffer主要可以通过head指针、tail指针等对线性内存进行寻址,其中,head指针用于指示读数据,tail指针用于指示写数据。换句话说,head指针和tail指针会随着数读写操作的进行不断发生改变。
131.本技术实施例中,head指针指向的内核流水日志可以是环形缓冲区中最早被写入的,tail指针指向的内核流水日志可以是环形缓冲区中最迟被写入的。
132.通过上述介绍知道,电子设备在运行过程中可以利用ringbuffer存储内核流水日志。因此,日志获取模块在获取日志时,可以从ringbuffer中读取内核流水日志,并生成内核日志。
133.在一些实施方式中,内核流水日志可以包括日志内容、时间戳、优先级以及进程的id等。其中,日志内容通常以字符串的格式存储在高速缓冲存储器的ringbuffer中,而时间戳、优先级以及进程的id等则是以二进制的格式存储。
134.作为一种方式,为了避免最终获取的内核日志存在乱码,日志获取模块在获取到内核流水日志时,其可以对内核流水日志中的时间戳、优先级以及进程的id等数据进行明文转换,并基于原始的日志内容和明文转换获取的时间戳、优先级以及进程的id等生成内核日志。
135.具体的,日志获取模块首先可以获取二进制格式的时间戳、优先级以及进程的id等,然后将二进制格式的时间戳、优先级以及进程的id等转换成明文格式。
136.作为另一种方式,为了避免最后获取的内核日志存在乱码,高速缓冲存储器在获取到内核流水日志时,其可以获取内核流水日志中的时间戳、优先级以及进程的id等。然后将时间戳、优先级以及进程的id等从二进制格式转换成明文格式。因此,日志获取模块从高速缓冲存储器处获取的内核流水日志可以是经过明文转换后获取的日志。
137.作为另一种方式,日志获取模块从高速缓冲存储器获取到内核流水日志时,其可以先确定内核流水日志中的时间戳、优先级以及进程的id等数据的格式是否为明文格式。如果时间戳、优先级以及进程的id等数据的格式为明文格式,日志获取模块则可以直接将获取的内核流水日志作为内核日志。
138.另外,如果内核流水日志中的时间戳、优先级以及进程的id等不是明文格式,日志获取模块则可以先对时间戳、优先级以及进程的id等数据进行明文转换,然后基于明文转换获取的数据生成内核日志。
139.本技术实施例通过执行明文转换操作可以避免最终获取的内核日志存在乱码的情况,如此在一定程度上可以提高开发人员查看日志的体验,进而可以提高故障排查的效率。
140.通过上述介绍知道,高速缓冲存储器可以利用ringbuffer实现对内核流水日志的缓存,在利用ringbuffer对内核流水日志进行缓存时,如果ringbuffer未满则head指针在前,而tail指针在后。
141.另外,如果ringbuffer存储已满,则可能会存在tail指针在前而head指针在后的
情况。此时,如果直接将内核流水日志ringbuffer截取出来则会导致最终获取的内核日志存在尾在前头在后的情况,即最终获取的日志存在乱序的情况。
142.为了避免最终获取的内核日志出现乱序情况,日志获取模块从ringbuffer中获取流水日志时,其可以先确定head指针和tail指针的位置。然后按照从头到尾的顺序生成内核日志。具体的,通过head指针和tail指针可以确定出高速缓冲存储器中各内核流水日志的生成顺序。换句话说,日志获取模块从ringbuffer处取内核流水日志时可以按照时间戳顺序截取。
143.日志获取模块在获取内核日志时,如果未按照从头到尾的顺序从高速缓冲存储器中读取内核流水日志,则最后生成的内核日志中可能存在数据乱序的问题。
144.作为一个示例,高速缓冲存储器的ringbuffer中存储有日志数据1、日志数据2、日志数据3和日志数据4,其中,head指针指向日志数据2,tail指针指向日志数据1。可见,日志数据1是在日志数据2、日志数据3和日志数据4之后生成的。如果直接将ringbuffer中的内容截取过来,则日志数据1必然存储在日志数据2、日志数据3和日志数据4之前,如此将会导致最后获取的内核日志的顺序前后颠倒,造成乱序的问题。
145.通过上述介绍知道,本技术实施例中的日志获取模块从高速缓冲存储器的ringbuffer中获取head指针和tail指针的位置,然后基于这两个指针生成内核日志。通过取head指针和tail指针本技术实施例可以确定出ringbuffer中最早被写入的日志数据是哪个,以及最晚被写入的日志数据是哪个。按照这样的顺序生成内核日志,便可以保证日志的存储顺序,进而可以提高开发人员进行故障分析的速率。
146.作为上述示例,利用本技术实施例获取的内核日志中各日志数据的顺序为日志数据2、日志数据3、日志数据4和日志数据1。
147.综上所述,日志获取模块在生成内核日志时,其可以对内核流水日志进行明文转换,以避免出现乱码。同时,在生成内核日志的过程中,日志获取模块通过从头到尾的顺序获取日志,在一定程度上可以保证日志的顺序。
148.本技术实施例中,电子设备所处阶段不同,则日志获取模块生成的日志包含的内容也不同。
149.作为一种方式,当电子设备所处阶段为开机阶段时,日志获取模块可以获取到引导程序日志和内核日志。其中,内核日志可以是经过明文转换操作和顺序截取操作获取的。日志获取模块在获取到引导程序日志和内核日志时可以执行日志整合操作,以得到目标日志,该目标日志可以称作是不开机日志。
150.另外,电子设备所处阶段为开机阶段时,日志获取模块在获取到引导程序日志和内核日志时也可以直接将引导程序日志和内核日志发送至开机阶段对应的裸分区,以指示开机阶段对应的裸分区对引导程序日志和内核日志进行整合得到目标日志,并对目标日志进行存储。
151.作为另一种方式,当电子设备所处阶段为运行阶段/关机阶段时,日志获取模块可以获取到系统状态日志和内核日志。其中,内核日志可以是经过明文转换操作和顺序截取操作获取的。日志获取模块在获取到系统状态日志和内核日志时可以执行日志整合操作,以得到目标日志,该目标日志可以称作是长按键日志。
152.作为另一种方式,电子设备所处阶段为运行阶段/关机阶段时,日志获取模块在获
取到系统状态日志和内核日志时也可以直接将系统状态日志和内核日志发送至运行阶段/关机阶段对应的裸分区,以指示运行阶段/关机阶段对应的裸分区对系统状态日志和内核日志进行整合得到目标日志,并对目标日志进行存储。
153.步骤s108:日志获取模块发送场景检测请求至场景检测模块。
154.在一些实施方式中,日志获取模块在生成目标日志后,其可以向场景检测模块发送场景检测请求。
155.步骤s109:场景检测模块检测电子设备当前所处阶段,得到阶段标识。
156.作为一种方式,场景检测模块在接收到日志获取模块传输的场景检测请求时,其可以检测电子设备当前所处的阶段,得到电子设备所处阶段的阶段标识。其中,阶段标识用于唯一标识电子设备所处的阶段,阶段标识不同,则表示电子设备当前所处的阶段也不同。
157.在一些实施方式中,场景检测模块可以获取电子设备当前的运行参数,然后基于该运行参数确定电子设备当前所处的阶段。电子设备当前的运行参数不同,则表示电子设备当前所处的阶段也不相同。例如,电子设备当前的运行参数包括引导程序相关的数据,则表示电子设备当前所处阶段为开机阶段。
158.本技术实施例中,阶段标识和电子设备所处阶段可以通过一一对应的方式存储。具体的,开机阶段对应的阶段标识可以为第一标识;运行阶段对应的标识可以为第二标识;关机阶段对应的标识可以为第三标识。
159.作为一个示例,阶段标识为1时表示电子设备当前所处阶段为开机阶段;阶段标识为2时表示电子设备所处阶段为运行阶段;阶段标识为3时标识电子设备所处阶段为关机阶段。不同阶段对应的阶段标识具体为多少这里不进行明确限制,只要能够明确区分出不同阶段即可。
160.在一些实施方式中,场景检测请求可以用于指示场景检测模块获取电子设备当前所处的阶段,以得到阶段标识。场景检测模块在获取到阶段标识后,其可以将阶段标识发送至日志获取模块,即进入步骤s110。
161.步骤s110:场景检测模块将该阶段标识发送至日志获取模块。
162.步骤s111:日志获取模块根据该阶段标识确定电子设备是否处于开机阶段。
163.在一个实施例中,日志获取模块在接收到场景检测模块传输的阶段标识后,其可以根据该阶段标识确定电子设备所处阶段是否为开机阶段。如果确定出电子设备所处阶段为开机阶段,则日志获取模块可以向不开机裸分区发送第一日志转储指令,即进入步骤s112。另外,如果电子设备所处阶段为非开机阶段,则日志获取模块可以向长按键裸分区发送第二日志转储指令,即进入步骤s114。
164.裸分区是一种没有经过格式化,不被unix通过文件系统来读取的特殊字符设备文件,即裸分区不需要经过文件系统的缓冲。另外,裸分区是不被操作系统直接管理的设备。相较其他存储区裸分区少了操作系统这一层,本技术实施例通过利用裸分区存储目标日志可以提高日志数据的读写效率。
165.本技术实施例中,裸分区可以包括不开机裸分区和长按键裸分区,其中,不开机裸分区用于存储不开机故障时生成的目标日志,该目标日志可以称作是不开机日志。长按键裸分区用于存储冻屏故障和关机卡死故障时生成的目标日志,该目标日志可以称作是长按键日志。
166.作为一种方式,如果日志获取模块接收到的阶段标识为第一标识,则确定电子设备所处阶段为开机阶段。另外,如果日志获取模块接收到的阶段标识为第二标识,则确定电子设备所处阶段为运行阶段,即电子设备所处阶段为非开机阶段。同理,如果日志获取模块接收到的阶段标识为第三标识,则确定电子设备所处阶段为关机阶段,即电子设备所处阶段为非开机阶段。
167.作为一个示例,如果日志获取模块接收到的阶段标识为1,则确定电子设备所处阶段为开机阶段。
168.作为另一个示例,如果日志获取模块接收到的阶段标识为2,则确定电子设备所处阶段为运行阶段,即电子设备所处阶段为非开机阶段。
169.作为另一个示例,如果日志获取模块接收到的阶段标识为3,则确定电子设备所处阶段为关机阶段,即电子设备所处阶段为非开机阶段。
170.上述示例仅用于举例说明,具体不做限定以实际情况为准。
171.作为另一种方式,日志获取模块在确定长按时长达到指定时长时,也可以直接获取阶段标识,然后根据阶段标识确定电子设备是否处于开机阶段。换句话说,电子设备所处阶段不同则对应的阶段标识也不相同。在确定长按时长达到指定时长时,日志获取模块可以直接获取阶段标识,以通过该阶段标识来确定电子设备是否处于开机阶段。
172.步骤s112:日志获取模块向不开机裸分区发送第一日志转储指令。
173.作为一种方式,在确定电子设备当前所处阶段为开机阶段时,日志获取模块可以向不开机裸分区发送第一日志转储指令。其中,第一日志转储指令可以携带有目标日志,第一日志转储指令用于指示不开机裸分区对目标日志进行存储。
174.本技术实施例中,不开机裸分区主要用于存储与不开机故障的相关日志。
175.步骤s113:不开机裸分区执行第一日志存储操作。
176.作为一种方式,不开机裸分区在接收到日志获取模块发送的第一日志转储指令时,其可以对日志获取模块传输的目标日志进行存储。其中,目标日志可以包括内核日志和引导程序日志。
177.步骤s114:日志获取模块向长按键裸分区发送第二日志转储指令。
178.作为一种方式,在确定电子设备当前所处阶段为非开机阶段时,日志获取模块可以向长按键裸分区发送第二日志转储指令。其中,第二日志转储指令携带有目标日志,第二日志转储指令用于指示长按键裸分区对目标日志进行存储。
179.本技术实施例中,长按键裸分区主要用于存储与冻屏故障和关机卡死故障相关的日志。
180.步骤s115:长按键裸分区执行第二日志存储操作。
181.作为一种方式,长按键裸分区在接收到日志获取模块发送的第二日志转储指令时,其可以对日志获取模块传输的目标日志进行存储。其中,目标日志可以包括系统状态日志和内核日志。
182.在一些实施方式中,长按键裸分区可以包括元数据和日志数据。其中,日志数据可以包括系统状态日志和内核日志,为了更好的理解长按键裸分区存储日志的格式,本技术实施例给出如图9所示的示例图。通过图9可以知道,长按键裸分区可以由元数据、多个系统状态日志、多个内核日志以及预留内存组成。
183.本技术实施例中,元数据主要用于校验写入的数据是否合法,以及对写入偏移位置进行控制等,该元数据可以包括幻数、校验码、游标以及日志列表。
184.其中,幻数用于判断数据是否被踩过,如果被踩,则确定数据非法,按照存储内容全零处理。可选的,幻数可以是预先定义的一个值,如果在存储日志的过程中幻数被修改,则确定数据被踩。
185.校验码主要用于确定元数据是否合法,进而可以确定出电子设备的硬件是否发生损坏或者被误写。本技术实施例可以利用sha256计算出元数据对应的哈希值,然后利用该哈希值实现对元数据的校验。例如,确定哈希值是否位于指定范围,若位于,则确定元数据合法,否则不合法。
186.游标用于存储上次写入日志的下标。例如,上次写入目标日志的下标是3,则元数据中的游标值为3。日志列表用于保存每个目标位置的写入位置、长度,以及用于控制每个目标日志的循环轮转和老化。
187.本技术实施例中,长按键裸分区可以存储有多个目标日志1151,每个目标日志1151可以由系统状态日志和内核日志组成。其中,长按键裸分区存储目标日志的数量可以是长按裸分区的总大小减去元数据大小并除以单个日志占用内存的总大小获取的。具体公式为:存储日志的数量=(长按键裸分区总大小-元数据大小)/(单个日志的总大小)。
188.另外,长按键裸分区可以利用ringbuffer对目标日志进行存储,以保证获取到的目标日志为最新日志。具体的,在存储目标日志的过程中,如果长按键裸分区已满,则可以老化最旧的目标日志。换句话说,在长按键裸分区的存储空间不足时,如果接收到新的目标日志本技术实施例可以从长按键裸分区头部覆盖最旧日志,直到存储空间足够。
189.为了清楚的理解长按键裸分区存储日志的过程,本技术实施例给出如图10所示的流程示意图。
190.步骤s01:长按键裸分区获取待存储的目标日志。
191.通过上述介绍知道,每份目标日志可以包括系统状态日志和内核日志,长按键裸分区在获取到待存储的目标日志时,其可以确定目标日志的大小,即进入步骤s02。
192.步骤s02:长按键裸分区确定目标日志的大小。
193.本技术实施例中,长按键裸分区获取到目标日志时,可以获取目标日志的大小。其中,目标日志的大小可以是系统状态日志和内核日志的总大小。例如,系统状态日志为128kb,内核日志为1028kb,则目标日志的大小为1152kb。
194.步骤s03:长按键裸分区确定可存储空间的大小。
195.在一些实施方式中,长按键裸分区在接收到日志获取模块传输的目标日志后,其也可以确定可存储空间的大小,其中,可存储空间的大小可以是长按键裸分区的剩余存储空间。其中,剩余存储空间可以是长按键裸分区总存储减去已占用存储。
196.作为一个示例,长按键裸分区的总大小为5*1024,且该长按键裸分区中已存储有3份目标日志,且这3份目标日志占用长按键裸分区的大小为3*(1024+128)=3456kb,此时长按键裸分区的剩余存储为1664kb。
197.需要说明的是,长按键裸分区在接收到日志获取模块传输的目标日志时,其可以先确定目标日志的大小,再确定可存储空间的大小,也可以先确定可存储空间的大小,再确定目标日志的大小,或者也可以同时确定可存储空间的大小和可存储空间的大小。具体先
确定哪个数据后确定哪个数据这里不进行明确限制可以根据实际情况进行选择。
198.步骤s04:长按键裸分区判断目标日志的大小是否小于可存储空间的大小。
199.作为一种方式,长按键裸分区在获取到目标日志的大小和可存储空间的大小后,其可以确定目标日志的大小是否小于可存储空间的大小。如果目标日志的大小小于可存储空间的大小,则更新游标的指示位置,即进入s05。另外,如果目标日志的大小大于可存储空间的大小,长按键转储裸分区则可以确定最先写入裸分区的日志,即进入步骤s07。
200.步骤s05:长按键裸分区更新游标的指示位置。
201.本技术实施例中,游标用于指示日志的写入位置,在判断目标日志的大小小于可存储空间的大小时,长按键裸分区可以更新游标指示的位置。具体的,可以将游标指示的位置下移一个。例如,上次写入日志后,游标指示的位置为3区域,在接收到目标日志后,可以将游标指示的位置更新为4区域,然后将目标日志存储至游标指示的位置4区域。
202.步骤s06:长按键裸分区将目标日志写入至下游标指示的位置。
203.作为一种方式,长按键裸分区在确定目标日志的大小小于可存储空间的大小时,可以将目标日志写入到游标指示的位置,其中,游标是在是接收到目标日志时更新过的最新游标。
204.步骤s07:长按键裸分区确定当前时刻裸分区中最先被写入的日志,该日志对应的存储区域为目标区域。
205.在一些实施方式中,如果目标日志的大小大于可存储空间的大小,长按键转储裸分区则可以确定当前时刻裸分区中最先被写入的日志,存储该日志的区域可以作为目标区域。当前时刻裸分区中最先被写入的日志可以是长按键裸分区中当前时刻存储的日志中最早被写入的日志。
206.作为一个示例,如果目标日志的大小大于可存储空间的大小,长按键转储裸分区可以将游标指示的位置设置为0,并将目标日志存储在游标指示的区域。
207.作为一个示例,目标日志1是2021年12月10日14:00被写入长按键裸分区的;目标日志2是2021年12月11日9:00被写入长按键裸分区的;目标日志3是2021年12月12日12:00被写入长按键裸分区的;目标日志4是2021年12月12日20:00被写入长按键裸分区的。通过对比发现目标日志1是最早被写入长按键裸分区的,故目标日志1便是最先写入裸分区的日志,此时存储目标日志1的区域可以称作是目标区域。
208.步骤s08:长按键裸分区将目标日志写入到目标区域中。
209.作为一种方式,长按键裸分区在确定目标日志的大小大于可存储空间的大小时,可以利用目标日志覆盖所述当前时刻裸分区中最先被写入的日志。具体的,长按键裸分区可以将当前获取的目标日志写入到目标区域。
210.为了清楚的理解长按键裸分区存储日志的过程,本技术实施例给出如图11所示的示例图。通过图11看出,长按键裸分区可以存储有8份目标日志,在长按键裸分区未满时可以按照从头到尾的顺序存储日志。例如,将目标日志1存储在游标“1”的位置处,将目标日志2存储到目标日志1的后面,即游标“2”的位置处,依次类推,最后将目标日志8存储在游标“8”的位置处。
211.另外,当目标日志9被写入时,由于长按键裸分区已满,此时目标日志的大小大于可存储空间的大小。为了保证最后获取的日志数据为最新的数据,本技术实施例可以将最
先写进裸分区的日志覆盖掉,即利用目标日志9覆盖掉目标日志1。换句话说,将最新的目标日志9写入到之前存储目标日志1的区域。
212.综上所述,长按键裸分区接收到最新目标日志时,如果剩余存储空间不足,则可以利用最新的目标日志覆盖最老的目标日志。如图11所示,利用目标日志9替换目标日志1。如此可以使长按键裸分区存储的日志内容是最新的,在一定程度上可以提高故障定位的效率。
213.在另一些实施方式中,场景检测请求可以携带有目标日志,故场景检测请求不仅可以用于指示场景检测模块获取电子设备当前所处的阶段,同时可以用于将目标日志发送至场景检测模块。场景检测模块在接收到场景检测请求时,其可以检测电子设备当前所处阶段,然后确定当前所处阶段是否为开机阶段。
214.可选的,如果电子设备当前所处阶段为开机阶段,则场景检测模块可以将其接收的目标日志发送至不开机裸分区。另外,如果电子设备当前所处阶段为非开机阶段,则场景检测模块可以将其接收的目标日志发送至长按转储裸分区。
215.需要说明的是,日志获取模块在执行日志生成操作之前,其可以先获取输入长按操作的时间,然后确定该时间是否位于指定时间段内,如果位于指定时间段内,则日志获取模块可以不执行日志生成操作。
216.其中,指定时间段的起始时间是电子设备的系统重新上电的时间,指定时间段的终止时间是电子设备的上电时间达到预设时长的时间。例如,预设时长可以为90s。
217.请参阅图12,t1为电子设备开机且系统重新上电的时间点,t1到t3则是指定时间段内,在该时间段内,如果检测到用户按压电源键,且按压时长超出6s,则日志获取模块不执行日志生成操作。例如,在图12中的t2时刻接收到长按操作,即使长按时长超出6s本技术实施例也不执行日志生成操作。
218.另外,在系统重新上电且超出90s后,如果检测到用户按压电源键,且按压时长超出6s,则日志获取模块执行日志生成操作,以得到目标日志。例如,在图12中的t4时刻接收到长按操作,且长按时长超出6s,日志获取模块执行日志生成操作,得到目标日志。
219.需要说明的是,在系统重新上电且超出90s后,如果检测到用户长按电源键,且长按时长超出6s,日志获取模块可以执行日志生成操作,得到目标日志。在此基础上,日志获取模块可以确定电子设备是否启动成功,如果电子设备启动成功,日志获取模块则向长按键裸分区发送第二日志转储指令,以指示长按键裸分区存储目标日志。其中,长按键裸分区用于转储系统状态日志信息和内核日志信息。
220.另外,如果电子设备处于启动状态,则日志获取模块则可以向不开机裸分区发送第一日志转储指令,以指示不开机裸分区存储目标日志。其中,不开机裸分区用于转储不开机日志信息。
221.在一些实施方式中,电子设备的不开机裸分区和长按键裸分区在对目标日志进行存储后,其可以将目标日志发送至服务器,以使服务器可以根据该目标日志分析电子设备的故障率。
222.可选的,服务器根据目标日志分析出电子设备的故障率之后,一方面,服务器可以将该故障率展示给厂商,以使得厂商根据该故障率指标衡量电子设备的质量标准,并且可以发现更多的故障和可能的操作。
223.另一方面,服务器还可以将该故障率展示给开发人员,以使得开发人员可以定位电子设备出现故障的问题。例如,定位出不开机、冻屏以及关机卡死等问题,并且对应解决该问题,如此可以提高电子设备的产品质量。
224.在另一些实施方式中,长按键裸分区在获取到目标日志后可以将目标日志发送至服务器,服务器再将其接收到的目标日志发送至开发人员。开发人员可以对目标日志进行分析,以确定出发生故障的位置,并对应给出解决策略等。另外,长按键裸分区也可以直接将目标日志发送给开发人员,以指示开发人员对故障进行分析。
225.通过上述介绍知道,长按键裸分区可以存储有多份目标日志,其中,多份日志可以是电子设备检测到用户针对电源键输入长按操作,且长按时间超出指定时长时存储的。例如,用户在一天的时间内长按电源键3次,且每次长按时间均超出6s,则长按键裸分区可以存储有3份日志。
226.作为一种方式,长按键裸分区获取到一份目标日志,便可以将其发送至服务器。
227.作为另一种方式,长按键裸分区在预设时间段获取到多份目标日志,则将预设时间段内的多份日志一起发送至服务器。例如,长按裸分区可以将一天内获取的目标日志同时发送至服务器。
228.在另一些实施方式中,开发人员可以是维修网点的维修人员,在分析电子设备故障问题,维修网点的维修人员可以利用维修反馈工具从长按键裸分区抓取长按键日志,然后基于抓取的长按键日志分析黑屏或者冻屏的原因。
229.作为一个示例,维修网点的维修人员可以通过远程桌面以及短信验证码等从电子设备的长按键裸分区中抓取长按键日志,并打印该长按键日志。另外,维修网点可以配置有维修反馈工具,通过该工具维修人员可以快速有效的从长按键裸分区抓取到日志,并对日志进行分析。
230.需要说明的是,本技术实施例获取的目标日志仅针对内部测试的用户,且抓取目标日志需要经过用户同意。
231.可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
232.本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的日志获取方法。
233.本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的日志获取方法。
234.另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的日志获取方法。
235.其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
236.通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
237.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
238.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
239.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
240.本技术各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本技术的范围之内。
241.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
242.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
技术特征:
1.一种日志获取方法,其特征在于,应用于电子设备,所述电子设备包括电源键,所述方法包括:响应于用户对所述电源键的按压操作,获取所述按压操作的按压时长;在所述按压时长超出指定时长的情况下,获取与所述按压操作相关的目标日志;如果所述电子设备所处阶段为开机阶段,则将所述目标日志转储至第一裸分区,所述第一裸分区用于存储电子设备在开机阶段生成的日志。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果所述电子设备所处阶段是非开机阶段,则将所述目标日志转储至第二裸分区,所述第二裸分区用于存储电子设备在运行阶段或关机阶段生成的日志。3.根据权利要求2所述的方法,其特征在于,将所述目标日志转储至第二裸分区,包括:确定所述目标日志的大小,以及确定所述第二裸分区可存储空间的大小;若所述目标日志的大小小于所述第二裸分区可存储空间的大小,更新游标的指示位置,所述游标用于指示日志写入的位置;按照所述游标指示的位置将所述目标日志写入所述第二裸分区。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:若所述目标日志的大小大于所述第二裸分区可存储空间的大小,则确定当前时刻所述第二裸分区中最先被写入的日志,所述最先被写入的日志对应的存储区域为目标区域;将所述目标日志写入至所述目标区域。5.根据权利要求1所述的方法,其特征在于,所述获取与所述按压操作相关的目标日志,包括:获取内核日志和引导程序日志,并将所述内核日志和引导程序日志作为所述目标日志,所述内核日志和所述引导程序日志是所述电子设备处于开机阶段时生成。6.根据权利要求2所述的方法,其特征在于,所述获取与所述按压操作相关的目标日志,包括:获取内核日志和系统状态日志,并将所述内核日志和所述系统状态日志作为所述目标日志,所述内核日志和所述系统状态日志是所述电子设备处于非开机阶段时生成。7.根据权利要求5或6所述的方法,其特征在于,所述电子设备包括高速缓冲存储器,获取内核日志,包括:从所述高速缓冲存储器中获取内核流水日志;对所述内核流水日志进行明文转换,得到所述内核日志。8.根据权利要求7所述的方法,其特征在于,所述高速缓冲存储器利用环形缓冲区实现对所述内核流水日志的缓存,所述环形缓冲区通过头指针和尾指针实现对内存的寻址;所述从所述高速缓冲存储器中获取内核流水日志,包括:从所述头指针指向所述尾指针的方向依次读取所述环形缓冲区中的内核流水日志。9.根据权利要求6所述的方法,其特征在于,所述系统状态日志至少包括时间戳、电子设备所处阶段、内存状态以及进程状态。10.根据权利要求2至4任一所述的方法,其特征在于,所述第二裸分区存储的数据包括元数据和日志数据,所述元数据用于确定写入所述第二裸分区的日志数据是否合法,所述元数据至少包括幻数、校验码、游标以及日志列表。
11.一种电子设备,其特征在于,包括:一个或多个处理器;存储器;电源键;以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:响应于用户对所述电源键的按压操作,获取所述按压操作的按压时长;在所述按压时长超出指定时长的情况下,获取与所述按压操作相关的目标日志;如果所述电子设备所处阶段为开机阶段,则将所述目标日志转储至第一裸分区,所述第一裸分区用于存储电子设备在开机阶段生成的日志。12.根据权利要求11所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:如果所述电子设备所处阶段是非开机阶段,则将所述目标日志转储至第二裸分区,所述第二裸分区用于存储电子设备在运行阶段或关机阶段生成的日志。13.根据权利要求12所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:确定所述目标日志的大小,以及确定所述第二裸分区可存储空间的大小;若所述目标日志的大小小于所述第二裸分区可存储空间的大小,更新游标的指示位置,所述游标用于指示日志写入的位置;按照所述游标指示的位置将所述目标日志写入所述第二裸分区。14.根据权利要求13所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:若所述目标日志的大小大于所述第二裸分区可存储空间的大小,则确定当前时刻所述第二裸分区中最先被写入的日志,所述最先被写入的日志对应的存储区域为目标区域;将所述目标日志写入至所述目标区域。15.根据权利要求11所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取内核日志和引导程序日志,并将所述内核日志和引导程序日志作为所述目标日志,所述内核日志和所述引导程序日志是所述电子设备处于开机阶段时生成。16.根据权利要求12所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:获取内核日志和系统状态日志,并将所述内核日志和所述系统状态日志作为所述目标日志,所述内核日志和所述系统状态日志是所述电子设备处于非开机阶段时生成。17.根据权利要求15或16所述的设备,其特征在于,所述电子设备包括高速缓冲存储器,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:从所述高速缓冲存储器中获取内核流水日志;对所述内核流水日志进行明文转换,得到所述内核日志。18.根据权利要求17所述的设备,其特征在于,所述高速缓冲存储器利用环形缓冲区实现对所述内核流水日志的缓存,所述环形缓冲区通过头指针和尾指针实现对内存的寻址;
当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:从所述头指针指向所述尾指针的方向依次读取所述环形缓冲区中的内核流水日志。19.根据权利要求16所述的设备,其特征在于,所述系统状态日志至少包括时间戳、电子设备所处阶段、内存状态以及进程状态。20.根据权利要求12至14任一所述的设备,其特征在于,所述第二裸分区存储的数据包括元数据和日志数据,所述元数据用于确定写入所述第二裸分区的日志数据是否合法,所述元数据至少包括幻数、校验码、游标以及日志列表。21.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任意一项所述的日志获取方法。
技术总结
本申请提供了一种日志获取方法及电子设备置,该方法应用于电子设备,电子设备包括电源键,该方法包括:响应于用户对所述电源键的按压操作,获取所述按压操作的按压时长;在所述按压时长超出指定时长的情况下,获取与所述按压操作相关的目标日志;如果所述电子设备所处阶段为开机阶段,则将所述目标日志转储至第一裸分区,所述第一裸分区用于存储电子设备在开机阶段生成的日志。本申请在检测到用户针对电源键输入按压操作,且按压时长达到指定时长时,执行日志生成操作以及日志转储操作,将不同阶段的日志存储在不同的裸分区中可以提高故障定位的效率。故障定位的效率。故障定位的效率。
技术研发人员:余亮 孙继龙
受保护的技术使用者:荣耀终端有限公司
技术研发日:2022.01.07
技术公布日:2023/7/21

版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:地图处理方法、装置及自移动设备与流程 下一篇:故障检测方法及电子设备与流程