日志生成方法及电子设备与流程

未命名 07-23 阅读:104 评论:0


1.本技术实施例涉及终端设备领域,尤其涉及一种日志生成方法及电子设备。


背景技术:

2.随着电子设备的普及和发展,具有触摸屏的电子设备逐渐进入人们的生活。现有的电子设备在使用过程中会由于一些关键进程运行异常导致电子设备发生故障,从而使电子设备出应用无响应或者系统服务无响应等问题。在检测到电子设备发生故障时,通过相关日志信息可以进行故障定位。因此,如何获取更加准确的日志信息是亟待解决的技术问题。


技术实现要素:

3.为了解决上述技术问题,本技术提供一种日志生成方法及电子设备。在该方法中,如果检测到电子设备发生故障,将故障进程相关的调用链添加至原始日志,以得到目标日志。如此,开发人员通过添加了调用链的目标日志可以更加快速有效的解决故障。
4.第一方面,本技术实施例提供一种日志生成方法。该方法包括:在电子设备发生故障的情况下,获取与故障相关的第一原始日志,以及获取故障相关的进程标识;基于进程标识获取第一调用链,第一调用链包括binder链和lock链;将第一调用链添加至第一原始日志,得到第一目标日志。这样,开发人员结合binder链和lock链可以快速有效的实现对故障的定位。
5.根据第一方面,获取故障相关的进程标识,包括:若故障为应用无响应,则获取异常应用程序对应的主进程标识,并将主进程标识作为故障相关的进程标识。这样,在电子设备发生应用无响应异常时可以获取与主进程关联的调用链。
6.根据第一方面,或者以上第一方面的任意一种实现方式,得到第一目标日志之后,包括:杀死主进程标识对应的进程。这样,不仅可以获取到调用链,以方便开发人员对故障的定位,而且可以尝试对故障应用程序进行恢复,以保证用户的使用体验。
7.根据第一方面,或者以上第一方面的任意一种实现方式,获取故障相关的进程标识,包括:若故障为系统看门狗异常,则获取系统服务进程的标识,并将系统服务进程的标识作为故障相关的进程标识。这样,在电子设备发生系统看门狗异常时可以获取与系统服务关联的调用链。
8.根据第一方面,或者以上第一方面的任意一种实现方式,得到第一目标日志之后,包括:基于lock链确定系统服务进程是否发生死锁事件;若系统服务进程发生死锁事件,则基于binder链确定系统服务进程的对端进程,并杀死对端进程。这样,不仅可以获取到系统服务进程关联的调用链,以方便开发人员对故障的定位,而且可以尝试对系统服务进程进行恢复,以保证用户的使用体验。
9.根据第一方面,或者以上第一方面的任意一种实现方式,杀死对端进程之后,包括:若电子设备未恢复正常运行,则获取第二调用链,以及获取与故障相关的第二原始日
志;将第二调用链添加至第二原始日志,得到第二目标日志。这样,电子设备可以获取到最新的目标日志,以方便开发人员更加准确的对故障进行定位。
10.根据第一方面,或者以上第一方面的任意一种实现方式,得到第二目标日志之后,包括:杀死系统服务进程。这样,电子设备自动进行系统重启,在一定程度上可以保证用户的使用体验。
11.根据第一方面,或者以上第一方面的任意一种实现方式,binder链中进程的调用深度为3层。
12.第二方面,本技术实施例提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:在电子设备发生故障的情况下,获取与故障相关的第一原始日志,以及获取故障相关的进程标识;基于进程标识获取第一调用链,第一调用链包括binder链和lock链;将第一调用链添加至第一原始日志,得到第一目标日志。
13.根据第二方面,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:若故障为应用无响应,则获取异常应用程序对应的主进程标识,并将主进程标识作为故障相关的进程标识。
14.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:杀死主进程标识对应的进程。
15.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:若故障为系统看门狗异常,则获取系统服务进程的标识,并将系统服务进程的标识作为故障相关的进程标识。
16.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:基于lock链确定系统服务进程是否发生死锁事件;若系统服务进程发生死锁事件,则基于binder链确定系统服务进程的对端进程,并杀死对端进程。
17.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:若电子设备未恢复正常运行,则获取第二调用链,以及获取与故障相关的第二原始日志;将第二调用链添加至第二原始日志,得到第二目标日志。
18.根据第二方面,或者以上第二方面的任意一种实现方式,当计算机程序被一个或多个处理器执行时,使得电子设备执行以下步骤:杀死系统服务进程。
19.根据第二方面,或者以上第二方面的任意一种实现方式,binder链中进程的调用深度为3层。
20.第三方面,本技术实施例提供一种芯片。该芯片包括一个或多个接口电路和一个或多个处理器;接口电路用于从电子设备的存储器接收信号,并向处理器发送信号,信号包括存储器中存储的计算机指令;当处理器执行计算机指令时,使得电子设备执行权利第一方面以及第一方面中任意一项的故障检测方法。
21.第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可
参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
22.第四方面,本技术实施例提供一种计算机可读存储介质。该计算机可读存储介质包括计算机程序,其特征在于,当计算机程序在电子设备上运行时,使得电子设备执行第一方面以及第一方面中任意一项故障检测方法。
23.第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
24.图1为本技术实施例提供的一种应用场景示意图;
25.图2为本技术实施例提供的电子设备发生应用无响应异常时界面的显示示意图;
26.图3为本技术实施例示出的电子设备的结构示意图;
27.图4为本技术实施例示出的电子设备的软件结构示意图;
28.图5本技术实施例提供的一种日志生成方法的流程示意图;
29.图6为本技术实施例提供的一种日志生成方法的框架示意图;
30.图7本技术实施例提供的一种日志生成方法中调用链的示意图;
31.图8本技术另一实施例提供的一种日志生成方法的流程示意图;
32.图9本技术又一实施例提供的一种日志生成方法的流程示意图;
33.图10本技术另一实施例提供的一种日志生成方法中死锁对应的lock链的示意图。
具体实施方式
34.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
35.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
36.还应当理解,在本技术实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
37.本技术实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
38.在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是
所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
39.在本技术实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
40.在介绍本技术实施例中的方法之前,为了便于本领域技术人员对本技术实施例的理解,先对本技术实施例中涉及到的相关概念进行介绍。
41.1)进程
42.进程(process)是应用程序关于某数据集合上的一次运行活动,是操作系统(例如,android系统)进行资源分配和调度的基本单位。每一个进程都会占用一块内存空间,应用程序以一个或多个进程的形式运行在操作系统上,实现相应的功能。
43.2)线程
44.线程(thread)是进程的一个实体,它是比进程更小的能独立运行的基本单位。线程可与同属一个进程的其他的线程共享该进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并行执行。
45.3)对象锁
46.对象锁是保证同一时间内只有一个线程访问某一方法或变量的一种机制。在java等面向对象的语言中,当一个线程访问被同步的代码时,必须获取该代码所属的对象锁,否则该线程将阻塞,直到该对象锁被释放。
47.对象锁是一个互斥锁,即最多只有一个线程能够获得该锁,当线程a尝试去获得线程b持有的对象锁时,线程a必须等待或者阻塞,直到线程b释放这个锁后,线程a才能够获取该对象锁访问相应的方法或变量。
48.4)线程阻塞
49.线程阻塞,通常是指一个线程在执行过程中出现暂停的时长大于某一预设值引发的超时现象。例如,线程a在执行过程中需要将线程b的执行结果作为输入参数才能继续执行,那么,如果线程a没有得到线程b的执行结果则会暂停执行,当线程a在预设时间内迟迟得不到线程b的执行结果,则会造成线程a发生阻塞现象。
50.5)anr
51.anr(application not responding,应用程序无响应)是指执行特定功能时,电子设备的显示界面发生延迟、出现丢帧现象。
52.具体的,anr是指应用程序在响应用户操作时的执行时间超过电子设备预设的阈值。其中,预设的阈值是指电子设备预先设置好的处理单一事件的时间。在大多数情况下,片刻时间过后,应用程序便可自行恢复正常。如果应用程序在片刻时间后继续保持卡顿现象,这将会造成更高级别的警告,导致用户的操作不能成功执行。
53.6)watchdog
54.watchdog为android平台内运行的一个软件,用于监护system_server(系统服务进程)。system_server是android平台中最重要的进程,里面运行有整个平台中绝大多数的服务。在system_server进程中运行着近50个线程,任何一个线程卡死都可能导致整个系统卡死。
55.watchdog用于对系统服务进程中运行的系统服务进行监控,并在监控到系统看门
狗异常的情况下,抓取堆栈信息。另外,watchdog在监控到系统看门狗异常且在指定时间内未自动恢复的情况下,重启系统服务。
56.7)system_sever
57.system_server是android系统的核心,是android framework层的系统服务模块,这个模块主要功能就是管理供android应用开发的系统服务,在dalvik虚拟机启动后立即开始初始化和运行,其它的系统服务在system_server进程的环境中运行。
58.8)ipc
59.进程间通信(ipc,inter-process communication)指至少两个进程或线程间传送数据或信号的一些技术或方法。ipc主要用于计算机系统中的不同进程之间的消息传递。
60.其中,进程是计算机资源分配的最小单位,每个进程都拥有自己的虚拟地址空间,并与其他进程的虚拟地址空间相互隔离,也就是说,一个进程只能访问自己的虚拟地址空间,不能访问其他进程的虚拟地址空间。为了使不同的进程之间能够互相访问并协调工作,操作系统提供了多种ipc机制。例如,binder机制。
61.9)binder
62.binder是android系统中进程间通信的一种方式,也是android系统中最重要的特性之一。android包括有四大组件,分别是activity(工作流)、service(服务)、broadcast(广播接收器)以及contentprovider(内容提供者),不同的应用程序等都运行在不同的进程中,binder是这些进程间通信的桥梁。正如其名“粘合剂”一样,binder把系统中各个组件粘合到了一起,是各个组件的桥梁。
63.binder采用c/s架构,其可以包含client(客户端)、server(服务端)、servicemanager(服务管理)以及binder驱动,其中,servicemanager用于管理系统中的各种服务。
64.其中,client进程为使用服务的进程,server进程为提供服务的进程,servicemanager进程的作用是将字符形式的binder名字转化成client中对该binder的引用,使得client能够通过binder获得对server中binder实体的引用。binder驱动负责进程之间binder通信的建立、binder在进程之间的传递、binder引用计数管理、数据包在进程之间的传递和交互等一系列底层支持。
65.请参阅图1,为本技术实施例提供的一种应用场景示例图。如图1所示,用户在电子设备100上进行操作时,电子设备100会生成目标日志,然后电子设备100可以通过通信网络将生成的日志上传至云端(服务器)。在此基础上,开发人员可以通过终端设备200从云端(服务器)获取电子设备100的日志。通过分析该目标日志,开发人员可以确定出故障的原因。
66.除此之外,电子设备100和终端设备200也可以通过开发工具直接连接,也就是终端设备200通过开发工具获取电子设备100的日志信息,在此基础上对日志信息进行分析,以得到故障原因。
67.电子设备中的应用程序在运行过程中,如果在一定时间内无法响应用户的触控操作,则表示电子设备可能出现了应用程序无响应异常(anr)。此时,电子设备的显示界面上可以弹出如图2所示提示框,通过该提示框告知用户应用程序a在运行过程中出现应用无响应异常。如果用户点击“关闭应用”控件,则电子设备强制关闭应用程序a的主进程,并记录
故障相关的日志。
68.另外,电子设备的系统服务在运行过程中,如果在一定时间内无法响应用户的触控操作,则表示电子设备可能出现了系统看门狗异常的问题。其中,系统看门狗异常的问题可以通过watchdog进行监测。
69.电子设备发生应用无响应异常或者系统服务器无响应异常时,均会记录故障相关的日志,然而此时记录的日志中仅包含有主进程相关的信息,开发人员通过该日志无法快速定位出故障的位置。如此,在很大程度的影响开发人员对故障的解决。
70.因此,为了快速有效的定位出故障的位置,本技术实施例在确定电子设备发生故障时,可以确定故障相关的进程。在此基础上,获取与该进程相关的调用链,并将该调用链添加原始日志,以得到目标日志。如此,开发人员通过添加了调用链的目标日志可以更加快速有效的解决故障。
71.本技术实施例中的日志生成方法可应用于如图3所示的电子设备中,图3所示的电子设备100可以为终端,也可以称为终端设备,终端可以为蜂窝电话(cellularphone),平板电脑(pad)、可穿戴设备或物联网设备等具有摄像头的设备,本技术不做限定。需要说明的是,电子设备100的结构示意图可以适用于图2中的电子设备。
72.进一步需要说明的是,电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图3中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
73.电子设备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可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
74.可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
75.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,ap),调制解调处理器,图形处理器(graphicsprocessingunit,gpu),图像信号处理器(imagesignalprocessor,isp),控制器,存储器,视频编解码器,数字信号处理器(digitalsignalprocessor,dsp),基带处理器,和/或神经网络处理器(neural-networkprocessingunit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
76.其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
77.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。usb接口130是符合usb标准规范的接口,具体可以是miniusb接口,microusb接口,usbtypec接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如ar设备等。
78.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
79.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
80.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
81.移动通信模块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)等无线通信的解决方案。
82.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
83.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
84.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight-emittingdiode,oled)。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
85.摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(chargecoupleddevice,ccd)或互补金属氧化物半导体(complementarymetal-oxide-semiconductor,cmos)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给isp转换成数字图像信号。isp将数字图像信号输出到dsp加工处理。dsp将数字图像信号转换成标准的rgb,yuv等格式的图像信号。在一些实施例中,电子设备100可以包括1个或n个摄像头193,n为大于1的正整数。
86.外部存储器接口120可以用于连接外部存储卡,例如microsd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
87.内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs)等。
88.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
89.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
90.触摸传感器,也称“触控面板”。触摸传感器可以设置于显示屏194,由触摸传感器与显示屏194组成触摸屏,也称“触控屏”。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
91.按键190包括开机键(或称电源键),音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。其中,按下电源键可以使手机息屏或亮屏。并且当按下电源键的时长超出一定时长时,电子设备100可以进入重启状态。
92.马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。
93.指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
94.电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为三层,从上至下分别为应用程序层,应用程序框架层,以及内核层。
95.应用程序层可以包括一系列应用程序包。
96.如图4所示,应用程序层可以包括相机,图库,日历,通话,地图,wlan,蓝牙,音乐,视频,短信息等应用程序。应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramminginterface,api)和编程框架。应用程序框架层包括一些预先定义的函数。如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。其中,窗口管理器可以运行在上述提到的system_
sever中。
97.内核层是硬件和上述软件层之间的层。内核层至少包含电源键驱动、显示驱动、故障检测模块、故障处理模块以及日志生成模块等。其中,该硬件可以包括摄像头、显示屏,麦克风,处理器,以及存储器等器件。
98.其中,故障检测模块用于确定电子设备是否故障,若电子设备发生故障,则故障检测模块可以用于获取故障相关的进程标识。另外,故障检测模块还可以用于确定电子设备是否恢复正常运行。
99.日志生成模块用于获取与故障进程相关的调用链,并将调用链的信息添加至原始日志中,得到目标日志。
100.故障处理模块用于在电子设备发生不同类型的异常时对应采取不同的故障处理操作。例如,在电子设备发生应用无响应异常时,故障处理模块可以杀死故障应用程序的主进程。
101.可以理解的是,图4示出的软件结构中的层以及各层中包含的部件,并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本技术不做限定。
102.在本技术实施例中,确定电子设备发生故障的情况下,可以确定故障相关的进程。在此基础上,获取该进程对应的调用链,并将该调用链添加至原始日志,以得到目标日志。如此,开发人员利用添加了调用链的日志可以快速定位出故障发生的位置,进而加快故障解决的速率。
103.如图5所示,本技术实施例提供的一种日志生成方法,该日志生成方法可以包括下述的步骤s110至步骤s140。
104.步骤s110:故障检测模块确定电子设备是否发生故障。
105.本技术实施例中,电子设备发生的故障可以是电子设备发生应用无响应异常(anr),或者是电子设备发生系统看门狗异常(vmwatchdog)。其中,应用无响应异常可以是电子设备运行的应用程序的主进程发生阻塞导致的,或者是主进程中的某个线程发送阻塞导致电子设备发生应用无响应异常。
106.另外,系统看门狗异常也可以称作是系统服务无响应异常,其可以是由电子设备的系统服务进程在运行过程中发生阻塞导致的,即系统服务进程中的某个线程发生阻塞导致电子设备发生系统服务无响应异常。因此,本技术实施例中电子设备的故障可以是线程阻塞导致的。
107.作为一种方式,故障检测模块可以检测电子设备是否发生故障,如果检测到电子设备发生故障,故障检测模块则可以获取与故障相关的进程标识,即进入步骤s120。另外,如果故障检测模块未检测到电子设备发生故障,则可以继续执行故障检测操作。
108.在一些实施方式中,故障检测模块确定电子设备是否发生故障时,可以获取电子设备当前的运行参数。通常情况下运行参数是电子设备运行状况的直接体现,故本技术实施例可以通过电子设备的运行参数确定电子设备是否发生故障,如此可以保证故障检测的准确性。
109.在另一些实施方式中,故障检测模块确定电子设备是否发生故障,可以是确定电子设备是否发生应用无响应异常,或者是确定电子设备是否发生系统看门狗异常。
110.作为一种方式,故障检测模块确定电子设备是否发生应用无响应异常/系统看门狗异常时,可以获取应用无响应异常/系统看门狗异常对应的标识,并基于该标识确定电子设备是否发生故障。
111.具体的,故障检测模块可以确定应用无响应异常/系统看门狗异常对应的标识是否为指定标识,若应用无响应异常/系统看门狗异常对应的标识为指定标识,则确定电子设备发生应用无响应异常/系统看门狗异常。
112.本技术实施例中,应用无响应异常/系统看门狗异常对应的标识主要用于表征电子设备是否发生对应的异常。作为一个示例,应用无响应异常对应的标识为a,若a为1,则表征电子设备发生应用无响应异常。另外,若a为0,则表征电子设备未发生应用无响应异常。
113.作为另一个示例,系统看门狗异常对应的标识为w,若b为1,则表征电子设备发生系统看门狗异常。另外,若w为0,则表征电子设备未发生系统看门狗异常。
114.需要说明的是,指定标识也可以为其他值,具体是哪个值这里不进行明确限制,只要其能明显表区分出是否发生应用无响应异常/系统看门狗异常即可。
115.作为另一种方式,故障检测模块确定电子设备是否发生应用无响应异常时,其也可以获取应用进程的等待时间,当应用进程的等待时间超出第一指定时长时,确定电子设备发生应用无响应异常。其中,第一指定时长可以为5s。
116.作为另一种方式,故障检测模块确定电子设备是否发生系统看门狗异常时,其也可以获取系统服务进程的等待时间,当该等待时间超出第二指定时长时,确定电子设备发生系统看门狗异常。其中,第二指定时长可以为30s。
117.步骤s120:故障检测模块获取故障相关的进程标识。
118.作为一种方式,故障检测模块在确定电子设备发生故障时,其可以获取故障相关的进程标识,即确定导致故障发生的进程。
119.通过上述介绍知道,进程/线程发生阻塞通常会导致电子设备出现故障,即出现卡死现象。因此,在确定电子设备发生故障时,本技术实施例可以获取导致故障出现的进程,即获取故障相关的进程标识。
120.本技术实施例中,故障相关的进程标识可以是主进程标识。例如,电子设备在运行应用程序1时,发生应用无响应异常,此时故障检测模块可以确定应用程序1的主进程a,并将主进程a的标识作为故障相关的进程标识。
121.另外,故障检测模块在获取到故障相关的进程标识时,也可以获取线程标识,其中线程标识可以是主线程中某一个线程的标识。电子设备发生故障可能是由主进程中的某个线程发生阻塞而导致的,通过获取线程标识可以更加快速有效的定位出故障的位置。
122.步骤s130:故障检测模块发送进程标识至日志生成模块。
123.在一些实施方式中,故障检测模块在获取到故障相关的进程标识时,其可以将该进程标识发送至日志生成模块,而日志生成模块则可以基于该进程标识获取调用链,即进入步骤s130。
124.需要说明的是,故障检测模块发送的进程标识除了包括进程的标识,也可以包括进程中线程的标识。
125.步骤s140:日志生成模块基于进程标识获取调用链,并将调用链添加至原始日志,得到目标日志。
126.作为一种方式,日志生成模块在获取到进程标识时,其可以获取该进程标识关联的调用链,然后将该调用链添加至原始日志,以得到目标日志。
127.本技术实施例中,进程标识关联的调用链可以包括binder链和lock链,其中,binder链可以是由进程与进程之间的调用关系组成。换句话说,binder链可以是各进程执行进程间通信所产生的调用关系。
128.另外,lock链可以是由进程中各线程对应的对象锁的关系组成。其中,对象锁可以是互斥锁,即一个进程中最多只有一个线程能够获取目标锁。
129.作为一种方式,binder链也可以称作是binder调用链,binder调用链包括至少一个进程,且该至少一个进程包括至少一个线程。当binder调用链包括两个以上进程时,该调用链中至少包括跨进程调用和跨线程调用。
130.在一些实施方式中,日志生成模块基于进程标识获取binder调用链时,其可以先将进程标识对应的进程作为第一节点,然后查找预设的调用链缓存在是否存在以第一节点为起始节点的调用链。
131.其中,调用链缓存用于存储调用链,binder调用链表示节点间的调用关系的有向图,一个binder调用链至少包括起始节点和终止节点,起始节点表示调用链的首个节点,终止节点表示调用链的末个节点。例如,binder调用链的形式为:a
→b→
c,表示的含义为:节点a首先调用节点b,然后节点b调用节点c。
132.为了更好的理解调用链,本技术实施例给出如图6所示的示例图。从图6可以看出,进程a调用的是进程b,而进程b调用的是进程c,这些进程之间的调用关系可以形成binder链。其中,binder链可以表示成:进程a

进程b

进程c。其中,进程a可以是应用进程,进程b可以是服务进程,而进程c可以是hal(hardware abstraction layer,硬件抽象层)进程。
133.需要说明的是,binder链中进程的调用深度是可配置的。作为一种方式,binder链中进程的调用深度可以为3。
134.另外,进程a在调用进程b时,其可以通过调用进程b中的某一线程来实现。如图6所示,进程a通过调用进程b中的线程1(thread1)来实现调用。另外,在调用进程b时,进程b中的线程1(thread1)执行相应任务需要获取锁1,而锁1则由线程2(thread1)持有,故线程1(thread1)处于等锁状态。另外,进程b通过线程2(thread2)调用进程c。
135.在一些实施方式中,同一进程中的各线程之间的调用关系,组成lock链。例如,lock链可以是t1

t2,指的是线程t1等待的锁在被线程t2持有。
136.作为一种方式,日志生成模块可以包括锁的索引器,通过所述锁的索引器本技术实施例可以获取到持锁的线程,进而得到lock链。其中,锁的索引器可以是双向索引器,即通过锁的标识可以索引到关联的线程标识。另外,通过线程的标识也可以索引到关联的锁的标识。
137.本技术实施例中,每个进程对应有唯一的进程标识,每个进程中的每个线程也对应有唯一的线程标识。另外,每个锁也可以对应有唯一的锁标识。其中,线程和锁之间可以进行双向索引。
138.具体的,每个线程可以对应有多个锁,其中,多个锁可以包括线程持有的锁和线程等待的锁,通过线程等待的锁可以知道目标线程等待的锁被哪些线程持有,通过持有的锁可以知道哪些线程正在等待目标线程持有的锁。另外,lock链中
139.作为一个示例,线程1对应有锁1、锁2和锁3。其中,锁1是线程1等待的锁,锁2和锁3是线程1持有的锁。可以看出,线程1等待的锁1正在被线程4持有,只有线程4释放了锁1,线程1才能够执行对应的任务。
140.另外,由于线程和锁之间可以进行双向索引,故本技术实施例也可以通过线程1持有的锁确定出等待锁的其他线程。例如,线程4持有锁1和锁4,等待锁1的线程是线程1,等待锁4的是线程5。综上,通过将线程和锁进行双向索引本技术实施例便可以得到lock链。
141.作为一个示例,同一进程中至少存在两个线程竞争同一对象锁,
142.为了更好地理解调用链,本技术实施例给出如图7所示的示例图。通过图7中的101本技术实施例可以获取到binder链。另外,通过102本技术实施例可以获取到lock链。图7中的“from”表示的是调用进程,“dest”表示的是被调用进程。示例性的,图7中调用进程的进程标识为“2231”。
143.作为一种方式,一个进程可以与另一个进程中的多个线程存在调用关系。例如,图7中的进程“2231”的第4个线程可以调用进程“1132”中的第2个线程。又如,进程“2231”的第3个线程可以调用进程“1132”中的第5个线程。
144.如图7所示的102表示的是同一进程中各线程之间的调用关系,即lock链。其中,tid可以是同一进程中的不同线程的标识。tid:1可以是进程2231中的第一个线程的标识;tid:2可以是进程2231中的第二个线程的标识;tid:3可以是进程2231中的第三个线程的标识;tid:4可以是进程2231中的第四个线程的标识。
145.通过上述介绍知道,如图7中的主进程可以是系统服务进程(system server),该进程的标识为“2231”。从图7看出,该系统服务进程中的线程1“tid:1”处于阻塞状态,且其等待的锁由线程4“tid:4”持有。另外,通过图7看出进程“2231”可以通过线程4“tid:4”调用进程“1132”中的线程2。
146.本技术实施例中,binder链和lock链可以是预先存储在电子设备中的,在获取到进程标识后,便可以对应获取到binder链和lock链。
147.需要说明的是,本技术实施例获取的调用链可以是一个,也可以是多个,具体根据进程间实际的通信情况确定。
148.在一些实施方式中,日志生成模块在获取到调用链后,可以将该调用链添加至原始日志,以得到目标日志。其中,原始日志可以是电子设备在发生故障时,对应获取的指定时间段内日志信息。其中,原始日志可以为应用无响应日志、系统看门狗异常日志或者长按键日志等。
149.作为一个示例,在确定电子设备发生应用无响应异常时,日志生成模块可以获取应用无响应异常日志(anr日志),同时可以获取到应用无响应异常相关的调用链。在此基础上,将调用链添加至应用无响应异常日志。
150.作为另一个示例,在确定电子设备发生系统看门狗异常时,日志生成模块可以获取系统看门狗异常日志(watchdog日志),同时可以获取到与系统看门狗异常相关的调用链。在此基础上,将调用链添加至系统看门狗异常日志。
151.作为另一个示例,在检测到用户长按电源键时,且长按时长超出预设时长时,日志生成模块可以获取长按键日志,同时可以获取到与长按操作相关的调用链。在此基础上,将调用链添加到长按键日志。具体的,将system_server相关的binder链和locker链加入到长
按键日志。
152.综上所述,本技术实施例最终获取的应用无响应异常日志、系统看门狗异常日志或者长按键日志等均可以包括调用链。在获取到这些日志时,通过利用结合其包括的调用链开发人员可以快速有效的解决故障。
153.另外,原始日志可以包括多个日志块,每个日志块的获取时间不同。例如,在指定时间段的起始时间生成的日志块为起始日志,在指定时间段的结束位置生成的日志块为结束日志块。
154.在一些实施方式中,日志生成模块获取到进程标识对应的调用链后,其可以将该调用链添加至原始日志,以得到目标日志。在将调用链添加至原始日志时,本技术实施例可以将调用链添加至原始日志的开始位置处,即将调用链添加到起始日志块之前。另外,也可以将调用链添加至原始日志的结束位置处,即将调用链添加到结束日志块之后。
155.在另一些实施方式中,为了使开发人员能够快速有效的查找到调用链,本技术实施例在将调用链添加至原始日志后,其也可以获取调用链添加的位置,然后将该位置写到目标日志的开始位置处,即将调用链的位置信息写到其实日志块之前。开发人员在查看目标日志时,便可以快速有效的获取到调用链的添加位置,进而加快故障解决的速率。
156.在另一些实施方式中,电子设备内可新增调用链文件,该调用链文件中可存储有不同进程间的调用关系,以及进程中各线程之间锁的关系。换句话说,日志生成模块在获取到调用链后,其可以将调用链写入至调用链文件中,并由调用链文件和原始日志组成目标日志。开发人员在分析目标日志时可以直接通过调用链文件知晓各进程与进程之间,以及进程中各线程之间的关系,然后结合日志信息可以快速有效的定位出故障的源头。
157.作为一种方式,日志生成模块在将调用链添加至原始日志,得到目标日志后,其可以将目标日志发送至服务器,以使服务器可以根据该目标日志分析电子设备的故障率。
158.可选的,服务器根据目标日志分析出电子设备的故障率之后,一方面,服务器可以将该故障率展示给厂商,以使得厂商根据该故障率指标衡量电子设备的质量标准,并且可以发现更多的故障和可能的操作。
159.另一方面,服务器还可以将该故障率展示给开发人员,以使得开发人员可以定位电子设备出现故障的问题。例如,应用无响应以及系统服务无响应等问题,并且对应解决该问题,如此可以提高电子设备的产品质量。
160.在另一些实施方式中,日志生成模块获取到目标日志时可以将目标日志发送至服务器,服务器再将其接收到的目标日志发送至开发人员。开发人员可以对目标日志进行分析,以确定出发生故障的位置,并对应给出解决策略等。另外,日志生成模块也可以直接将目标日志发送给开发人员,以指示开发人员对故障进行分析。
161.在另一些实施方式中,开发人员可以是维修网点的维修人员,在分析电子设备故障问题,维修网点的维修人员可以利用维修反馈工具抓取目标日志,然后基于抓取的目标日志分析应用无响应/系统服务无响应的原因。
162.作为一个示例,维修网点的维修人员可以通过远程桌面以及短信验证码等从电子设备的存储区中抓取目标日志,并打印该目标键日志。另外,维修网点可以配置有维修工具维修反馈工具,通过该工具维修人员可以快速有效的从抓取到目标日志,并对目标日志进行分析。
163.如图8所示,本技术另一实施例提供的一种日志生成方法,该日志生成方法可以包括下述的步骤s210至步骤s260。
164.步骤s210:故障检测模块确定电子设备是否发生应用无响应异常。
165.通过上述介绍知道,应用无响应异常可以是电子设备运行的应用程序的主进程发生阻塞导致的,即主进程中的某个线程发送阻塞导致电子设备发生应用无响应异常。因此,在确定电子设备是否发生应用无响应异常时,故障检测模块可以确定电子设备是否发生应用无响应异常。
166.作为一种方式,故障检测模块可以获取应用无响应异常对应的标识,然后确定该标识是否为指定标识,若为指定标识,则确定电子设备发生应用无响应异常。例如,确定应用无响应异常对应的标识是否为1,如果应用无响应异常对应的标识为1,则确定电子设备发生应用无响应异常。另外,如果应用无响应异常对应的标识为0,则确定电子未发生应用无响应异常。
167.作为另一种方式,故障检测模块也可以先获取电子设备当前运行的应用程序,然后确定该应用程序对应的进程,并获取进程的等待时间,当该等待时间超出第一指定时长时,确定电子设备发生应用无响应异常。其中,第一指定时长可以为5s。例如,应用程序a的主进程在执行对应任务时发生阻塞,且阻塞时间超出第一指定时长,此时,故障检测模块可以确定电子设备发生应用无响应异常。
168.在一些实施方式中,如果故障检测模块确定电子设备发生应用无响应异常,则可以获取异常应用程序对应的主进程标识,即进入步骤s220。另外,如果故障检测模块未检测到电子设备发生应用无响应异常,则可以对应用无响应异常进行持续的监测。
169.步骤s220:故障检测模块获取异常应用程序对应的主进程标识。
170.本技术实施例中,每个应用程序可以对应有一个主进程,在确定电子设备发生应用无响应异常时,故障检测模块可以确定导致该异常的应用程序。然后获取该应用程序的主进程,并将其标识作为异常应用程序对应的主进程标识。
171.步骤s230:故障检测模块发送主进程标识至日志生成模块。
172.作为一种方式,故障检测模块在获取到主进程标识后,其可以将该主进程标识发送至日志生成模块。
173.步骤s240:日志生成模块基于主进程标识获取调用链,并将调用链添加至原始日志,得到目标日志。
174.本技术实施例中,日志生成模块在获取到主进程标识后,其可以基于该主进程标识获取到调用链。通过上述介绍知道,调用链包括binder链和lock链,其中,binder链包括主进程与其他进程之间的调用关系。lock链可以包括进程中各线程之间锁的关系,即持锁以及等锁关系。具体如何获取lock链和binder链上述实施例已进行了详细介绍,这里就不再进程赘述。
175.作为一种方式,日志生成模块基于主进程标识获取到调用链后,其可以将调用链添加至原始日志,以得到目标日志。
176.步骤s250:日志生成模块发送杀死指示信息至故障处理模块。
177.作为一种方式,日志生成模块在获取到目标日志后,可以发送杀死指示信息至故障处理模块,以指示故障处理模块杀死主进程,即进入步骤s260。
178.示例性的,杀死指示信息中可以包括待杀死进程的标识,故障处理模块接收到杀死指示信息时可以杀死该标识对应的进程。
179.作为另一种方式,日志生成模块在获取到目标日志后,其也可以指示电子设备输出提示框,当检测到用户输入“关闭应用”的指示信息时,日志生成模块可以向故障处理模块发送杀死指示信息。
180.步骤s260:故障处理模块杀死主进程。
181.作为一种方式,故障处理模块在接收到杀死指示信息后,其可以将主进程杀死,即强制关闭应用程序。
182.如图9所示,本技术又一实施例提供的一种日志生成方法,该日志生成方法可以包括下述的步骤s301至步骤s314。
183.步骤s301:故障检测模块确定电子设备是否发生系统看门狗异常。
184.通过上述介绍知道,系统看门狗异常可以是由于电子设备的系统服务进程在运行过程中发生阻塞导致的,即系统服务进程中的某个线程发生阻塞导致电子设备发生系统看门狗异常。因此,在确定电子设备是否发生系统看门狗异常时,故障检测模块可以确定系统服务进程是否发生阻塞事件,若系统服务进程发生阻塞事件,则确定电子设备发生系统看门狗异常。
185.作为一种方式,故障检测模块可以先获取系统服务进程的等待时间,当该等待时间超出第二指定时长时,确定电子设备发生系统看门狗异常。其中,第二指定时长可以为30s。例如,系统服务进程在执行对应任务时发生阻塞,且阻塞时间超出第二指定时长,此时,确定电子设备发生系统看门狗异常。
186.在一些实施方式中,如果故障检测模块确定电子设备发生系统看门狗异常,则获取异常相关的进程标识,即进入步骤s302。另外,如果故障检测模块未检测到电子设备发生系统无响应异常,则可以对系统无响应异常进行持续的监测。
187.步骤s302:故障检测模块获取异常相关的进程标识。
188.本技术实施例中,故障检测模块在系统服务进程的等待时间超出第二指定时长时,可以获取异常相关的进程标。另外,异常相关的进程标识可以是系统服务进程对应的进程标识。
189.步骤s303:故障检测模块发送进程标识至日志生成模块。
190.作为一种方式,故障检测模块在获取到异常相关的进程标识时,其可以将该进程标识发送至日志生成模块,以是指日志生成模块获取第一调用链。
191.步骤s304:日志生成模块获取与该进程标识相关的第一调用链的binder链和lock链,并将binder链和lock链添加至第一原始日志,得到第一目标日志。
192.通过上述介绍知道,binder链可以包括系统服务进程与其他进程之间的调用关系。另外,进程可以包括多个线程,且这些线程通常存在持锁以及等锁的情况,如此可以构成lock链。其中,lock链包括同一进程中各线程之间锁的关系。具体如何获取lock链和binder链上述实施例已进行了详细介绍,这里就不再进程赘述。
193.步骤s305:日志生成模块发送死锁检测指示信息至死锁检测器。
194.其中,死锁检测指示信息用于指示死锁检测器检测系统服务进程是否发生死锁事件。另外,死锁检测指示信息可以携带有binder链和lock链。
195.步骤s306:死锁检测器基于lock链确定系统服务进程是否发生死锁事件。
196.在一些实施方式中,死锁事件指的是同一进程中的各线程均处于等锁状态,且在等锁过程中各线程之间形成闭环等锁的情况。因此,死锁检测器在获取到死锁检测指示信息时,其可以基于lock链确定系统服务进程是否发生死锁事件。为了更好的理解死锁对应的lock链,本技术实施例给出如图10所示的示图。
197.通过图10看出,线程1“tid:1”等待的锁被线程3“tid:3”持有,线程3“tid:3”等待的锁被线程4“tid:4”持有,而线程4“tid:4”等待的锁被线程1“tid:1”持有。可见,图10中的线程1、线程3和线程4均处于等锁状态,且各线程之间形成闭环等锁的状态,如此导致各线程均无法获得锁,故发生死锁事件。
198.作为一种方式,死锁检测器在确定系统服务进程发生死锁事件时,其可以发送杀死指示信息至故障处理模块,即进入步骤s307。
199.步骤s307:死锁检测器发送杀死指示信息至故障处理模块。
200.作为一种方式,死锁检测器在确定系统服务进程发生死锁事件后,可以向故障处理模块发送杀死指示信息,以指示故障处理模块杀死系统服务进程的对端进程,即进入步骤s308。示例性的,杀死指示信息中可以包括待杀死进程的标识,该待杀死进程的标识可以是对端进程的标识。
201.步骤s308:故障处理模块杀死对端进程。
202.在一些实施方式中,故障处理模块在接收到日志生成模块传输的杀死指示信息时,其可以基于对端进程的标识杀死对端进程,即关闭对端进程。其中,对端进程可以是binder调用链中的最后一个进程。
203.作为一个示例,日志生成模块获取到的binder调用链的形式为:a
→b→
c。其中,a表示的是系统服务进程,在确定系统服务进程发生死锁事件时,故障处理模块可以杀死对端进程c,即关闭进程c。
204.在另一些实施方式中,故障处理模块杀死对端进程后,其可以发送恢复检测请求至故障检测模块,即进入步骤s309。
205.步骤s309:故障处理模块发送恢复检测请求至故障检测模块。
206.步骤s310:故障检测模块确定电子设备是否恢复正常运行。
207.作为一种方式,故障检测模块在接收到恢复检测请求后,可以在系统服务进程的等待时间达到第三指定时长时,确定电子设备是否恢复正常运行。其中,恢复正常运行可以是系统服务进程从阻塞态切换至正常运行态,即系统看门狗异常被消除。第二指定时长可以为60s。
208.另外,如果电子设备恢复正常运行,则故障检测模块可以继续对电子设备的系统看门狗异常进行检测。如果电子设备未恢复正常运行,则发送日志获取请求至日志生成模块,即进入步骤s311。
209.步骤s311:故障检测模块发送日志获取请求至日志生成模块。
210.步骤s312:日志生成模块获取第二调用链,并将第二调用链添加到第二原始日志,得到第二目标日志。
211.在一些实施方式中,日志生成模块在接收到日志获取请求时可以获取第二调用链,并将第二调用链添加至第二原始日志。
212.其中,第二调用链也可以包括binder链和lock链。另外,binder链包括主进程与其他进程之间的调用关系。lock链包括同一进程中各线程之间锁的关系,即持锁以及等锁等关系。需要说明的是,第二调用链与第一调用链可能是相同的,也可能是不同的,具体以实际情况为准。
213.本技术实施例中,第二原始日志和第一原始日志包含的日志的格式相同,二者不同之处在于产生日志的时间不同。换句话说,第一日志和第二目标日志包含的日志内容基本相同,不同之处在于产生的时间不同。
214.步骤s313:日志生成模块发送系统重启指示信息至故障处理模块。
215.在一些实施方式中,日志生成模块在获取到目标日志后,其可以向故障处理模块发送系统重启指示信息,以指示故障处理模块重启电子设备的系统。
216.步骤s314:故障处理模块重启系统。
217.本技术实施例中,故障处理模块接收到系统重启指示信息时,其可以重启电子设备的系统。具体的,故障处理模块可以直接杀死系统服务进程以实现对系统的重启。例如,日志生成模块获取到的binder调用链的形式为:a
→b→
c。其中,a可以是系统服务进程,故障处理模块在重启系统时,其可以直接关闭进程a,以使的电子设备的系统进入重启状态。
218.可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
219.本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的日志生成方法。
220.本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的日志生成方法。
221.另外,本技术的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的日志生成方法。
222.其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
223.通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
224.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,
仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
225.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
226.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
227.本技术各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本技术的范围之内。
228.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
229.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。

技术特征:
1.一种日志生成方法,其特征在于,应用于电子设备,所述方法包括:在所述电子设备发生故障的情况下,获取与所述故障相关的第一原始日志,以及获取所述故障相关的进程标识;基于所述进程标识获取第一调用链,所述第一调用链包括binder链和lock链;将所述第一调用链添加至所述第一原始日志,得到第一目标日志。2.根据权利要求1所述的方法,其特征在于,所述获取所述故障相关的进程标识,包括:若所述故障为应用无响应,则获取异常应用程序对应的主进程标识,并将所述主进程标识作为所述故障相关的进程标识。3.根据权利要求2所述的方法,其特征在于,所述得到所述第一目标日志之后,包括:杀死所述主进程标识对应的进程。4.根据权利要求1所述的方法,其特征在于,所述获取所述故障相关的进程标识,包括:若所述故障为系统看门狗异常,则获取系统服务进程的标识,并将所述系统服务进程的标识作为所述故障相关的进程标识。5.根据权利要求4所述的方法,其特征在于,所述得到所述第一目标日志之后,包括:基于所述lock链确定所述系统服务进程是否发生死锁事件;若所述系统服务进程发生死锁事件,则基于所述binder链确定所述系统服务进程的对端进程,并杀死所述对端进程。6.根据权利要求5所述的方法,其特征在于,所述杀死所述对端进程之后,包括:若所述电子设备未恢复正常运行,则获取第二调用链,以及获取与故障相关的第二原始日志;将所述第二调用链添加至所述第二原始日志,得到第二目标日志。7.根据权利要求6所述的方法,其特征在于,所述得到第二目标日志之后,包括:杀死所述系统服务进程。8.根据权利要求1至7任一所述的方法,其特征在于,所述binder链中进程的调用深度为3层。9.一种电子设备,其特征在于,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:在所述电子设备发生故障的情况下,获取与所述故障相关的第一原始日志,以及获取所述故障相关的进程标识;基于所述进程标识获取第一调用链,所述第一调用链包括binder链和lock链;将所述第一调用链添加至所述第一原始日志,得到第一目标日志。10.根据权利要求9所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:若所述故障为应用无响应,则获取异常应用程序对应的主进程标识,并将所述主进程标识作为所述故障相关的进程标识。11.根据权利要求10所述的设备,其特征在于,当所述计算机程序被所述一个或多个处
理器执行时,使得所述电子设备执行以下步骤:杀死所述主进程标识对应的进程。12.根据权利要求9所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:若所述故障为系统看门狗异常,则获取系统服务进程的标识,并将所述系统服务进程的标识作为所述故障相关的进程标识。13.根据权利要求12所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:基于所述lock链确定所述系统服务进程是否发生死锁事件;若所述系统服务进程发生死锁事件,则基于所述binder链确定所述系统服务进程的对端进程,并杀死所述对端进程。14.根据权利要求13所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:若所述电子设备未恢复正常运行,则获取第二调用链,以及获取与故障相关的第二原始日志;将所述第二调用链添加至所述第二原始日志,得到第二目标日志。15.根据权利要求14所述的设备,其特征在于,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行以下步骤:杀死所述系统服务进程。16.根据权利要求9至15任一所述的设备,其特征在于,所述binder链中进程的调用深度为3层。17.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-8中任意一项所述的日志生成方法。

技术总结
本申请提供了一种日志生成方法及电子设备,该方法包括:在所述电子设备发生故障的情况下,获取与所述故障相关的第一原始日志,以及获取所述故障相关的进程标识;基于所述进程标识获取第一调用链,所述第一调用链包括binder链和lock链;将所述第一调用链添加至所述第一原始日志,得到第一目标日志。本申请在检测到电子设备发生故障,将故障进程相关的调用链添加至原始日志,以得到目标日志,如此开发人员通过添加了调用链的目标日志可以更加快速有效的解决故障。快速有效的解决故障。快速有效的解决故障。


技术研发人员:余亮 郭晓杰 赵俊民
受保护的技术使用者:荣耀终端有限公司
技术研发日:2022.01.07
技术公布日:2023/7/22
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐