CN113672445A - 记录目标程序运行状态信息的方法以及电子设备 - Google Patents
记录目标程序运行状态信息的方法以及电子设备 Download PDFInfo
- Publication number
- CN113672445A CN113672445A CN202010400975.9A CN202010400975A CN113672445A CN 113672445 A CN113672445 A CN 113672445A CN 202010400975 A CN202010400975 A CN 202010400975A CN 113672445 A CN113672445 A CN 113672445A
- Authority
- CN
- China
- Prior art keywords
- signal
- target process
- target
- state information
- running state
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 441
- 230000008569 process Effects 0.000 claims abstract description 396
- 230000009471 action Effects 0.000 claims abstract description 53
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 67
- 230000006870 function Effects 0.000 description 30
- 238000007726 management method Methods 0.000 description 29
- 230000006854 communication Effects 0.000 description 23
- 238000004891 communication Methods 0.000 description 21
- 239000010410 layer Substances 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000009286 beneficial effect Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000026676 system process Effects 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000009131 signaling function Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种记录目标程序运行状态信息的方法、电子设备以及计算机可读存储介质。方法包括:源进程通过系统调用向内核传递第一信号,第一信号为用于发送至目标进程以使得目标进程执行第一动作的信号,目标进程为用于执行目标程序的进程;内核判断递达的第一信号是否为不能被捕获的信号,并基于第一信号为不能被捕获的信号的判断结果,向目标进程发送用于替换第一信号的第二信号,其中,第二信号为能被捕获的信号;目标进程接收第二信号,并执行响应于第二信号的处理,该处理为与第一动作相对应的处理动作。本申请可以记录目标程序的运行状态信息,从而,程序维护人员可对目标程序的故障原因进行定位,有利于对程序进行改进。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种记录目标程序运行状态信息的方法、电子设备以及计算机可读存储介质。
背景技术
在linux信号机制中,signal 9信号为不能被捕获的信号。当正在运行的进程在接收到signal 9信号时,进程会被强制终止。如果正在运行的进程为前台应用程序进程,会出现前台应用程序的闪退;如果正在运行的进程为关键系统进程,可能会导致电子设备重启,上述都会影响用户体验。
然而,进程在被signal 9信号终止时,其运行状态信息无法被记录,因此,程序维护人员不能定位进程终止的原因,不利于对程序进行改进。
发明内容
本申请的一些实施方式提供了一种记录目标程序运行状态信息的方法以及电子设备,以下从多个方面介绍本申请,以下多个方面的实施方式和有益效果可互相参考。
第一方面,本申请实施方式提供了一种记录目标程序运行状态信息的方法,包括:源进程通过系统调用向内核传递第一信号,第一信号为用于发送至目标进程以使得目标进程执行第一动作的信号,目标进程为用于执行目标程序的进程;内核判断递达的第一信号是否为不能被捕获的信号,并基于第一信号为不能被捕获的信号的判断结果,向目标进程发送用于替换第一信号的第二信号,其中,第二信号为能被捕获的信号;目标进程接收第二信号,并执行响应于第二信号的处理,处理为与第一动作相对应的处理动作。
当第一信号为不能捕获的信号时,目标进程在接收到第一信号时,被强制执行第一信号所对应的缺省动作(例如,终止目标进程,暂停目标进程)。这样,目标进程会对外呈现故障状态。本申请的实施方式中,当源进程向目标进程发送的第一信号为不能被捕获的信号时,内核将第一信号变更为能被捕获的第二信号并将第二信号发送至目标进程。从而,当目标进程接收到第二信号之后,可执行与第一动作相对应的动作,例如,执行第一动作并记录目标进程的运行状态信息,这样,程序维护人员可对故障原因进行定位,有利于对程序进行改进。
在一些实施方式中,内核基于第一信号为能被捕获的信号的判断结果,向目标进程发送第一信号;并且,目标进程响应于接收第一信号,执行第一动作。
根据本申请的实施方式,当内核判断第一信号为能被捕获的信号时,则向目标进程正常发送第一信号,以使得目标进程响应于第一信号执行第一动作。
在一些实施方式中,第一信号为signal 9信号,第一动作为终止目标进程,并且,与第一动作相对应的处理为终止目标进程并记录目标进程的运行状态信息。例如,生成包括目标程序的运行状态信息的日志文件,或向服务器发送目标进程的运行状态信息。
根据本申请的实施方式,当目标进程被signal 9信号终止时,可记录目标进程在终止时的运行状态信息,以便于对目标进程的终止原因进行定位,有利于对程序进行改进。
在一些实施方式中,目标进程的运行状态信息包括目标进程的标识信息和目标进程被终止时的堆栈信息。
根据本申请的实施方式,有利于对目标进程的终止原因进行定位。
在一些实施方式中,目标进程的运行状态信息包括源进程的标识信息,和/或第二信号的信号值。
根据本申请的实施方式,有利于定位目标进程被终止的直接原因。
在一些实施方式中,与第一动作相对应的处理动作为第二信号所对应的缺省处理方式。
根据本申请的实施方式,可以通过执行第二信号所对应的缺省动作获取目标进程的运行状态信息,可简化程序的设计。在一些实施方式中,第二信号为signal 3信号、signal 4信号、signal 6信号、signal 8或signal 11信号。
在一些实施方式中,与第一动作相对应的处理为自定义的处理方式,自定义的处理方式包括通过调用故障记录进程记录目标进程的运行状态信息。
根据本申请的实施方式,可以通过调用故障记录进程记录目标进程的运行状态信息,可简化程序的设计。
在一些实施方式中,故障记录进程为debuggerd进程。
根据本申请的实施方式,可以与tombstone机制进行融合,不仅有利于简化程序设计,还能实现运行状态信息的定期汇总和上报。在一些实施方式中,第二信号为signal 4信号、signal 5信号、signal 6信号、signal 7信号、signal 8信号、signal 11信号或signal31信号。
在一些实施方式中,方法还包括:内核判断目标进程是否为关键进程;并且,内核基于第一信号为不能被捕获的信号的判断结果,以及目标进程为关键进程的判断结果,向目标进程发送用于替换第一信号的第二信号。
根据本申请的实施方式,对于非关键进程,可以通过signal 9信号正常终止非关键进程。
在一些实施方式中,目标进程包括用于标志目标进程是否为关键进程的关键度标志位,内核根据关键度标志位的值判断目标进程是否为关键进程。
在一些实施方式中,当目标进程为前台应用程序进程时,关键度标志位的值被设置为表示目标进程为关键进程。
前台应用程序进程的运行状态对用户体验的影响较大,本申请实施方式中,将其设置为关键进程,有利于获取前台应用程序的运行状态信息,并将此作为对程序进行改进的手段。
在一些实施方式中,目标进程的关键度标志位的值通过管理进程进行设置。在一些实施方式中,管理进程在用户空间内设置目标进程的关键度标志位的值,从而可简化管理进程与目标进程的通信过程。
在一些实施方式中,源进程为下述其中一个:目标进程自身;目标进程之外的其他用户进程。即,本申请实施方式的技术方案既适用于一个进程向另一个进程发送第一信号的情况,也适用于进程向自身发送第一信号的情况。
第二方面,本申请实施方式提供了一种电子设备,包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令;处理器,当处理器执行存储器中的指令时,可使得电子设备执行本申请第一方面任一实施方式所述的方法。第二方面能达到的有益效果可参考第一方面任一实施方式所提供的方法的有益效果,此处不再赘述。
第三方面,本申请实施方式提供了一种计算机可读存储介质,计算机可读存储介质上存储有指令,该指令在计算机上执行时可使计算机执行第一方面任一实施方式所述的方法。第三方面能达到的有益效果可参考第一方面任一实施方式所提供的方法的有益效果,此处不再赘述。
附图说明
图1为Android原生机制中对signal 11信号的处理方法流程示意图;
图2为本申请实施方式提供的记录目标程序运行状态信息的方法的应用场景示意图;
图3为本申请实施方式提供的电子设备的构造示意图;
图4为本申请实施方式提供的电子设备的软件架构图;
图5为本申请实施例提供的记录目标程序运行状态信息的方法的流程示意图;
图6为本申请另一个实施例提供的记录目标程序运行状态信息的方法的流程示意图;
图7示出了本申请实施方式提供的电子设备的框图;
图8示出了本申请实施方式提供的片上系统(SoC,System on Chip)的结构示意图。
具体实施方式
以下将参考附图详细说明本申请的具体实施方式。
为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些具体实施方式中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便凸显本申请的主旨。
图1示出了Android原生机制中,某应用程序进程在收到signal 11、signal 6等信号时的情形。以signal 11信号为例,应用程序进程在运行过程中,由于访问了无效的内存地址,内核会给应用程序进程发送了signal 11信号。应用程序进程在接收到signal 11信号后,执行与signal 11信号相对应的处理动作。本示例中,与signal 11信号相对应的处理动作为调用debuggerd进程并终止应用程序进程。通过调用debuggerd进程,可以抓取应用程序进程在终止时的运行状态信息(例如,该应用程序进程的进程号(Process ID,PID),进程名称,堆栈信息等),并将抓取到的运行状态信息记录在墓碑(tombstone)日志中,因此,该处理机制又称“tombstone机制”。tombstone机制会定期将tombstone日志中的信息上报服务器,以使得程序维护人员可对应用程序的故障进行定位和分析,以对应用程序进行改进,提高用户体验。
上述示例中,与信号相对应的处理动作为用户自定义的处理动作。即,用户可以在应用程序中定义与各信号相对应的处理动作,这样,应用程序进程在接收到信号后,可执行与该信号相对应的处理动作。具体地,用户可以通过signal()、sigaction()等函数定义信号与处理动作之间的对应关系。以signal(signum,*sinnal_handler)函数为例,其有两个参数,第一个参数为信号的信号值,第二个参数为指向函数signal_handler()的指针。其中,函数signal_handler()为信号处理函数,其中定义了与信号signum相对应的处理动作,这样,当进程收到signum信号时,会执行信号处理函数signal_handler()中定义的动作。
本文中,信号的信号值可以是该信号的名称,也可以是该信号的编号。例如,对于signal 11信号,其编号为“11”,名称为“sigsegv”,因此,该信号的信号值可以是“11”,也可以是“sigsegv”。信号机制可以理解为中断机制在软件层次上的模拟,换句话说,一个进程收到一个信号与处理器收到一个中断请求在原理上是相似的(因此,信号又称“软中断信号”)。当前进程(即,取得CPU控制权的进程)在接收到信号后,执行与该信号相对应的处理动作。
以上以应用程序进程作为示例介绍了进程在接收到信号之后的处理过程,可以理解的是,在其他示例中,接收信号的进程也可以是系统程序进程。下文中,将接收信号的进程称为“目标进程”。另外,本文还将发送信号的进程称为“源进程”,源进程既可以是系统程序进程,也可以是应用程序进程。
本文中,系统程序和应用程序均为用户程序,运行于用户空间,用于执行用户任务;与用户程序相对的是内核程序(即,操作系统程序),内核程序运行于内核空间,用于执行操作系统任务(例如,分配CPU时间、内存等系统资源)。为了保证程序的安全运行,通常要求用户程序进程不能直接执行某些有可能引起损害的指令(例如,进程调度,访问I/O,终止另一进程等),而是要通过系统调用请求内核执行。
在一些情况下,如果用户程序中未定义信号处理函数,目标进程在接收到信号时,会执行与该信号相对应的缺省处理动作。每一个信号都有与其相对应的缺省处理动作,例如,signal 4对应的缺省处理动作为终止目标进程并产生核心文件(core file)。其中,核心文件包括目标进程在终止时的运行状态信息,可用于对目标进程的终止原因进行定位和分析。
有一类信号(包括signal 9信号(信号名为:sigkill)和signal 19信号(信号名为:sigstop)),用户不能自定义与其相对应的处理动作。当进程在接收到该类信号时,只能执行与信号相对应的缺省处理动作。本文将该类信号称为不能被捕获的信号,将其他能自定义处理动作的信号称为能被捕获的信号。
目标进程在接收到不能被捕获的信号时,被强制执行该信号所对应的缺省动作(例如,终止进程,暂停进程),目标进程会对外呈现故障状态。但是,其出现故障的原因无法被记录,因此不能对故障原因进行定位。下文中,将signal 9信号作为不能被捕获的信号的示例,对本申请的技术方案进行说明。
对于signal 9而言,与其相对应的缺省处理动作为终止进程,因此,当目标进程收到signal 9信号时,进程会直接终止。如果目标进程为前台应用程序进程,会出现前台应用程序的闪退;如果目标进程为系统进程,可能会导致电子设备重启,上述都会对用户体验造成不好的影响。然而,由于目标进程在被signal 9信号终止时,其运行状态信息无法被记录,因此,程序维护人员不能定位进程终止的原因,不利于对程序进行改进。
为此,本申请实施方式提供了一种记录目标程序运行状态信息的方法,用于记录目标程序在接收到信号时的运行状态信息。图2示出了本申请实施方式的一个应用场景,该场景中,源进程向目标进程发送了一个信号(该信号为原始信号)。
由于信号的发送需要通过系统调用实现,因此,源进程在发出原始信号后,原始信号首先被传递到内核。内核接收到原始信号后,对原始信号进行检测。当内核检测到原始信号为signal 9信号时,将其变更为另一个信号(称为:变更后的信号),并将变更后的信号发送至目标进程,其中,变更后的信号为可被捕获的信号。这样,当目标进程在接收变更后的信号时,可执行响应于变更后的信号的处理动作,该处理动作包括终止目标进程并记录目标进程在被终止时的运行状态信息。其中,目标进程的运行状态信息包括目标进程的标识信息(例如,目标进程的PID、目标进程的进程名),目标进程在终止时的堆栈信息等。
即,本申请实施方式中,内核会对源进程发送的初始信号进行甄别,如果源进程发送的初始信号是不能被捕获的signal 9信号,则将其变更为可被捕获的信号。目标进程在接收到变更后的信号时,终止进程并记录进程在终止时的运行状态信息,这样,程序维护人员可以根据该运行状态信息定位进程被终止的原因,以便对程序进行改进。
需要说明的是,本申请实施方式的应用场景还可以是图2所示场景之外的其他场景。
例如,在另一个场景中,目标进程基于某些运行异常给自身发送signal 9信号,以主动终止进程。进程运行异常的情况例如为运算溢出、外部存储空间不足、文件读取失败、I/O长时间未响应等。
又如,在又一个场景中,内核接收到原始信号后,对原始信号进行检测。当内核检测到原始信号为signal 19信号(该信号用于暂停目标进程且不能被捕获)时,将其变更为另一个信号。当目标进程接收到变更后的信号时,暂停进程并记录运行状态信息。
图3示出了根据本申请一实施例的电子设备100的结构示意图。其中,电子设备100可实现为手机、平板、可穿戴设备等,本实施例不作限定。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接头130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。本实施例中,内部存储器121中存储有指令,该指令由处理器110执行时可使得电子设备100执行本申请实施方式提供的用于记录目标程序运行状态信息的方法。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图4是本发明实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。内核还包括信号管理模块,信号管理模块为用于实施本申请实施方式提供的记录目标程序运行状态信息的方法的软件模块。本实施例中,当源进程通过系统调用向目标进程发送信号时,信号会先到达信号管理模块。信号管理模块对接收到的信号进行甄别,如果源进程发送的信号为signal 9信号时,信号管理模块将其变更为可被捕获的信号,再将变更后的信号发送至目标进程。
以下结合图2示出的场景对本申请的具体实施例进行说明。
【实施例一】
本实施例提供了一种用于记录目标程序运行状态信息的方法。本实施例中,源进程通过系统调用向目标进程发送信号时,源进程发送的原始信号到达内核后,内核对原始信号进行甄别,如果原始信号为signal 9信号,则将之变更为能被捕获的信号,再将变更后的信号发送给目标进程。目标进程在接收到变更后的信号后,执行与变更后的信号相对应的处理动作,该处理动作包括终止目标进程并记录目标进程在终止时的运行状态信息,从而,程序维护人员可依据目标进程的运行状态信息对目标进程的终止原因进行定位,有利于对程序进行改进。
具体地,参考图5,本实施例提供的方法包括下述步骤:
S110:源进程通过系统调用,向内核传递原始信号,原始信号为用于发送至目标进程的信号。
本实施例中,源进程通过调用系统函数kill()发送信号(该信号为原始信号),在源进程发起系统调用后,原始信号首先被传递至内核。本实施例中,原始信号被传递至内核的信号管理模块。
kill(pid,signum)函数的第一参数为目标进程的PID,第二参数为原始信号的信号值。即,原始信号为发送至进程号为PID的目标进程的signum信号。在其他实施例中,源进程还可以调用系统函数sigqueue()向目标进程发送信号,或者,调用系统函数raise()向自身发送信号。
本实施例对原始信号的信号值不作限制,原始信号可以是不能被捕获的信号,例如,signal 9;也可以是能被捕获的信号,例如,signal 4,signal 6等。
本实施例对源进程向目标进程发送原始信号的原因不做限制。例如,当目标进程为未通过安全认证的进程时,病毒监测进程向其发送signal 9信号;当目标进程获取了超过其所需的权限时,系统管理进程向其发送signal 15信号;当目标进程占用了过多的系统资源(如,内存资源)时,系统进程向其发送signal 6信号;当某进程的耗电量超过设定阈值时,电源管理进程向其发送signal 19信号。
S120:内核判断递达的原始信号是否为signal 9信号。若是,则执行步骤S130,对原始信号进行转换;若不是,则执行步骤S140,继续向目标进程发送原始信号。
具体地,信号管理模块对递达的原始信号进行甄别,如果原始信号为signal 9信号,则执行步骤S130,以对原始信号进行转换;如果原始信号不是signal 9信号,则执行步骤S140,以继续向目标进程发送原始信号。
以下具体说明步骤S120中判断原始信号是signal 9信号的情形。
S130:内核对原始信号进行变更,并向目标进程发送变更后的信号。
内核向目标进程发送信号的方法为,在目标进程所在的进程表项的信号域中设置对应于该信号的位。也就是说,内核向目标进程发送变更后的信号的含义为,内核在目标进程所在的进程表象的信号域中设置对应于变更后的信号的位,而非设置对应于原始信号的位。
变更后的信号为可以被捕获的信号。具体地,变更后的信号可以是为signal 4(信号名为:sigill)、signal 5(信号名为:sigtrap)、signal 6(信号名为:sigabrt)、signal 7(信号名为:sigbus)、signal 8(信号名为:sigfpe)、signal 11(信号名为:sigsegv)或signal 31(信号名为:sigsys)中的其中一个。上述信号为在tombstone机制中注册的信号,换句话说,在tombstone机制中,当目标程序接收到上述信号时,信号处理函数会调用debuggerd进程,以生成tombstone日志。
本申请不限于此。例如,在另一些实施例中,变更后的信号为signal 3(信号名为:sigquit)、signal 4(信号名为:sigill)、signal 6(信号名为:sigabrt)、signal 8(信号名为:sigfpe)、signal 11(信号名为:sigsegv)中的其中一个。这些信号所对应的缺省处理动作为终止进程并生成状态日志文件(例如,core文件),这样,目标进程可以通过执行信号所对应的缺省动作获取状态日志文件;在又一些实施例中,变更后的信号为上述未提及的其他能被捕获的信号。
S140:目标进程响应于接收到变更后的信号,执行变更后的信号所对应的处理,其中,变更后的信号所对应的处理为记录目标进程的运行状态信息,并终止目标进程。
本实施例中,用户通过信号处理函数signal_handle()自定义变更后的信号所对应的处理动作。具体地,信号处理函数signal_handle()包括调用故障记录进程,以通过故障记录进程记录目标进程的运行状态信息。
具体地,故障记录进程为debuggerd进程。如上文所述,通过调用debuggerd进程可以抓取应用程序进程在终止前的运行状态信息,并将抓取到的运行状态信息记录在墓碑(tombstone)日志中。换句话说,本实施例通过与tombstone机制进行融合,不仅有利于简化程序设计,还能实现运行状态信息的定期汇总和上报。
本实施例中,目标进程的运行状态信息包括:目标进程的标识信息(例如,目标进程的PID、目标进程的进程名),以及目标进程在终止时的堆栈信息。这样,通过分析该运行状态信息,可以对目标进程的终止原因进行定位,以便对程序进行改进。
可以理解,上述实施方案为对本申请实施方式的示例性说明,本领域技术人员可以进行其他变形。
例如,在一些实施例中,变更后的信号所对应的处理动作为该信号相对应的缺省处理动作。该实施例中,变更后的信号为signal 4、signal 5、signal 6或signal 7时,其所对应的缺省处理动作为生成核心文件(其中包括目标进程的运行状态信息)并终止目标进程,这样,目标进程通过执行变更后的信号所对应的缺省处理动作,即可记录目标进程的运行状态信息。该实施例可以简化程序的设计。
又如,在一些实施例中,目标进程的运行状态信息包括源进程的标识(例如,源进程的PID,源进程的名称),和/或目标进程接收到的信号的信号值等,以便于定位目标进程终止的直接原因。
以下具体说明步骤S120中判断原始信号并非signal 9信号的情形。
S150:内核向目标进程发送原始信号。如前所述,内核向目标进程发送原始信号的方式为在目标进程所在的进程表项的信号域中设置对应于原始信号的位,不再赘述。
S160:目标进程响应于接收到原始信号,执行原始信号所对应的处理,例如,终止进程,暂停进程等。另外,原始信号所对应处理可以是用户自定义的处理,也可以是原始信号所对应的缺省处理,本实施例不作限定。
本实施例中,内核对源进程发送的原始信号进行甄别,当原始信号为signal 9时,将其变更为可被捕获的信号,并向目标进程发送变更后的信号。这样,目标进程在接收到变更后的信号后,可记录目标程序的运行状态信息,以便后续对目标进程的终止原因进行定位,并将此作为对程序进行改进的手段。
【实施例二】
本实施例提供了另一种记录目标进程运行状态信息的方法。与实施例一不同的是,本实施例中,增加了对目标进程的关键程度进行判断的步骤。当目标进程为关键进程时,才将原始发送的signal 9信号替换为变更后的信号;对于非关键进程,则正常发送原始信号(原始信号可能是signal 9信号)。本实施例中,可以通过signal 9信号正常终止非关键进程。具体地,参考图6,本实施例包括下述步骤:
S210:设置目标进程的关键度标志位的值。
本实施例中,关键度标志位的标识名为flag_exit_catch。当flag_exit_catch的值为1时,表示目标进程为关键进程;当flag_exit_catch的值为0时,表示目标进程为非关键进程。可以理解,本申请不限于此,例如,在其他实施例中,当flag_exit_catch的值为“true”时,表示目标进程为关键进程。
flag_exit_catch的值是通过管理进程进行设置的。管理进程根据目标进程的重要程度确定目标进程的flag_exit_catch的值,例如,当目标进程为运行于前台的应用程序进程时,其运行状态对用户体验的影响比较大,因此,管理进程将该目标进程的flag_exit_catch的值设为1;又如,当目标进程为关键系统进程时(例如,手机的拨号服务进程),管理进程将其flag_exit_catch的值设为1。
本实施例中,管理进程为用户进程,管理进程在用户空间内对目标进程的flag_exit_catch的值进行设置,从而可简化管理进程与目标进程的通信过程。
目标进程在获取flag_exit_catch的值后,将flag_exit_catch的值传递到内核空间,以便后续步骤中内核根据flag_exit_catch的值判断目标进程是否为关键进程。
可以理解,本实施例提供的flag_exit_catch的设置方式仅为示例性说明,本领域技术人员可以进行其他变形。例如,在另一个实施例中,flag_exit_catch的值为目标程序自己管理的,即,目标程序中会设定flag_exit_catch的默认值,在目标进程初始化时,flag_exit_catch被赋予该默认值;在另一个实施例中,管理进程在确定目标进程的flag_exit_catch之后,直接把值传递到内核地址空间。
S220:源进程通过系统调用,向内核传递原始信号,原始信号为用于发送至目标进程的信号。例如,源进程通过调用系统函数kill()发送信号(该信号为原始信号),在源进程发起系统调用后,原始信号首先被传递至内核。
本步骤的与实施例一的步骤S110实质相同,其具体细节可参考实施例一的步骤S110。
S230:内核判断递达的原始信号是否为signal 9信号。若是,则执行步骤S240,判断目标进程是否为关键进程;若不是,则执行步骤S270,继续向目标进程发送原始信号。
即,内核对递达的原始信号进行甄别,如果原始信号为signal 9信号,则执行步骤S240,以进一步判断目标进程是否为关键进程;如果原始信号不是signal 9信号,则执行步骤S280,以继续向目标进程发送原始信号。
以下具体说明步骤S230中判断原始信号是signal 9信号的情形。
S240:内核判断目标进程是否为关键进程。具体地,内核从内核地址空间中获取目标进程flag_exit_catch的值,若flag_exit_catch的值为1,则判断目标进程为关键进程,执行步骤S260,对原始信号进行转换;若flag_exit_catch的值为0,则判断目标进程为非关键进程,执行步骤S270,继续向目标进程发送原始信号。
S250:内核对原始信号进行变更,并向目标进程发送变更后的信号。即,内核在目标进程所在的进程表象的信号域中设置对应于变更后的信号的位,以替代设置对应于原始信号的位。
S260:目标进程响应于接收到变更后的信号,执行变更后的信号所对应的处理,其中,变更后的信号所对应的处理为记录目标进程的运行状态信息,并终止目标进程。
本实施例中,目标进程的运行状态信息包括:目标进程的标识信息(例如,目标进程的PID、目标进程的进程名),以及目标进程在终止时的堆栈信息。这样,通过分析该运行状态信息,可以对目标进程的终止原因进行定位,以便对程序进行改进。
另一些实施例中,目标进程的运行状态信息包括源进程的标识(例如,源进程的PID,源进程的名称),和/或目标进程接收到的信号的信号值等,以便于定位目标进程终止的直接原因。
以下具体说明步骤S230中判断原始信号并非signal 9信号的情形。
S270:内核向目标进程发送原始信号。如前所述,内核向目标进程发送原始信号的方式为在目标进程所在的进程表项的信号域中设置对应于原始信号的位,不再赘述。
S280:目标进程响应于接收到原始信号,执行原始信号所对应的处理,例如,终止进程,暂停进程等。另外,原始信号所对应处理可以是用户自定义的处理,也可以是原始信号所对应的缺省处理,本实施例不作限定。
本实施例中,步骤S250~S280与实施例一中的步骤S130~S160实质上相同,对于步骤中的细节过程不再赘述。
本实施例中,当源进程向目标进程发送的原始信号为signal 9信号,且目标进程为关键进程时,才对原始信号进行变更。当目标进程为非关键进程时,内核正常向目标进程发送原始信号。本实施例可以通过signal 9信号正常终止非关键进程。
可以理解,实施例一和实施例二为本申请技术方案的示例性说明,本领域技术人员可以采用其他变形方式。例如,可以将互换实施例二中步骤S230和步骤S240的顺序;又如,当内核管理模块判断原始信号为signal 19信号时,对其进行变更,并将变更后的信号发送至目标进程。目标进程接收到变更后的信号时,暂停进程并记录运行状态信息。
现在参考图7,所示为根据本申请的一个实施例的电子设备400的框图。电子设备400可以包括耦合到控制器中枢403的一个或多个处理器401。对于至少一个实施例,控制器中枢403经由诸如前端总线(FSB,Front Side Bus)之类的多分支总线、诸如快速通道连(QPI,QuickPath Interconnect)之类的点对点接口、或者类似的连接406与处理器401进行通信。处理器401执行控制一般类型的数据处理操作的指令。在一实施例中,控制器中枢403包括,但不局限于,图形存储器控制器中枢(GMCH,Graphics&Memory Controller Hub)(未示出)和输入/输出中枢(IOH,Input Output Hub)(其可以在分开的芯片上)(未示出),其中GMCH包括存储器和图形控制器并与IOH耦合。
电子设备400还可包括耦合到控制器中枢403的协处理器402和存储器404。或者,存储器和GMCH中的一个或两者可以被集成在处理器内(如本申请中所描述的),存储器404和协处理器402直接耦合到处理器401以及控制器中枢403,控制器中枢403与IOH处于单个芯片中。
存储器404可以是例如动态随机存取存储器(DRAM,Dynamic Random AccessMemory)、相变存储器(PCM,Phase Change Memory)或这两者的组合。存储器404中可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。计算机可读存储介质中存储有指令,具体而言,存储有该指令的暂时和永久副本。该指令可以包括:由处理器中的至少一个执行时导致电子设备400实施如图5、图6所示方法的指令。当指令在计算机上运行时,使得计算机执行上述实施例一和/或实施例二公开的方法。
在一个实施例中,协处理器402是专用处理器,诸如例如高吞吐量MIC(ManyIntegrated Core,集成众核)处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU(General-purpose computing on graphics processing units,图形处理单元上的通用计算)、或嵌入式处理器等等。协处理器402的任选性质用虚线表示在图7中。
在一个实施例中,电子设备400可以进一步包括网络接口(NIC,NetworkInterface Controller)406。网络接口406可以包括收发器,用于为电子设备400提供无线电接口,进而与任何其他合适的设备(如前端模块,天线等)进行通信。在各种实施例中,网络接口406可以与电子设备400的其他组件集成。网络接口406可以实现上述实施例中的通信单元的功能。
电子设备400可以进一步包括输入/输出(I/O,Input/Output)设备405。I/O405可以包括:用户界面,该设计使得用户能够与电子设备400进行交互;外围组件接口的设计使得外围组件也能够与电子设备400交互;和/或传感器设计用于确定与电子设备400相关的环境条件和/或位置信息。
值得注意的是,图7仅是示例性的。即虽然图7中示出了电子设备400包括处理器401、控制器中枢403、存储器404等多个器件,但是,在实际的应用中,使用本申请各方法的设备,可以仅包括电子设备400各器件中的一部分器件,例如,可以仅包含处理器401和网络接口406。图7中可选器件的性质用虚线示出。
现在参考图8,所示为根据本申请的一实施例的SoC(System on Chip,片上系统)500的框图。在图8中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图8中,SoC500包括:互连单元550,其被耦合至处理器510;系统代理单元580;总线控制器单元590;集成存储器控制器单元540;一组或一个或多个协处理器520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM,StaticRandom-Access Memory)单元530;直接存储器存取(DMA,Direct Memory Access)单元560。在一个实施例中,协处理器520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU(General-purpose computing on graphics processing units,图形处理单元上的通用计算)、高吞吐量MIC处理器、或嵌入式处理器等。
静态随机存取存储器(SRAM)单元530可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。计算机可读存储介质中存储有指令,具体而言,存储有该指令的暂时和永久副本。该指令可以包括:由处理器中的至少一个执行时导致SoC实施如图5、图6所示方法的指令。当指令在计算机上运行时,使得计算机执行上述实施例一和/或实施例二中公开的方法。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请的各方法实施方式均可以以软件、磁件、固件等方式实现。
可将程序代码应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP,Digital Signal Processor)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在计算机可读存储介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP(Intellectual Property,知识产权)核”的这些表示可以被存储在有形的计算机可读存储介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
Claims (18)
1.一种记录目标程序运行状态信息的方法,其特征在于,包括:
源进程通过系统调用向内核传递第一信号,所述第一信号为用于发送至目标进程以使得所述目标进程执行第一动作的信号,所述目标进程为用于执行所述目标程序的进程;
内核判断递达的所述第一信号是否为不能被捕获的信号,并基于所述第一信号为不能被捕获的信号的判断结果,向目标进程发送用于替换所述第一信号的第二信号,其中,所述第二信号为能被捕获的信号;
所述目标进程接收所述第二信号,并执行响应于所述第二信号的处理,所述处理为与所述第一动作相对应的处理动作。
2.根据权利要求1所述的方法,其特征在于,所述内核基于所述第一信号为能被捕获的信号的判断结果,向所述目标进程发送所述第一信号;
并且,所述目标进程响应于接收所述第一信号,执行所述第一动作。
3.根据权利要求1所述的方法,其特征在于,所述第一信号为signal 9信号,所述第一动作为终止所述目标进程,并且,与所述第一动作相对应的处理动作为终止所述目标进程并记录所述目标进程的运行状态信息。
4.根据权利要求3所述的方法,其特征在于,所述目标进程的运行状态信息包括所述目标进程的标识信息和所述目标进程被终止时的堆栈信息。
5.根据权利要求3或4所述的方法,其特征在于,所述目标进程的运行状态信息包括所述源进程的标识信息,和/或所述第二信号的信号值。
6.根据权利要求3所述的方法,其特征在于,与所述第一动作相对应的处理动作为所述第二信号所对应的缺省处理方式。
7.根据权利要求6所述的方法,其特征在于,所述第二信号为signal 3信号、signal 4信号、signal 6信号、signal 8或signal 11信号。
8.根据权利要求3所述的方法,其特征在于,与所述第一动作相对应的处理动作为自定义的处理方式,所述自定义的处理方式包括通过调用故障记录进程记录所述目标进程的运行状态信息。
9.根据权利要求8所述的方法,其特征在于,所述故障记录进程为debuggerd进程。
10.根据权利要求9所述的方法,其特征在于,所述第二信号为signal 4信号、signal 5信号、signal 6信号、signal 7信号、signal 8信号、signal 11信号或signal 31信号。
11.根据权利要求1或3所述的方法,其特征在于,所述方法还包括:
内核判断所述目标进程是否为关键进程;
并且,内核基于所述第一信号为不能被捕获的信号的判断结果,以及所述目标进程为关键进程的判断结果,向目标进程发送用于替换所述第一信号的所述第二信号。
12.根据权利要求11所述的方法,其特征在于,所述目标进程包括用于标志所述目标进程是否为关键进程的关键度标志位,内核根据所述关键度标志位的值判断所述目标进程是否为关键进程。
13.根据权利要求12所述的方法,其特征在于,当所述目标进程为前台应用程序进程时,所述关键度标志位的值被设置为表示所述目标进程为关键进程。
14.根据权利要求12所述的方法,其特征在于,所述目标进程的关键度标志位的值通过管理进程进行设置。
15.根据权利要求14所述的方法,其特征在于,所述管理进程在用户空间内设置所述目标进程的关键度标志位的值。
16.根据权利要求1所述的方法,其特征在于,所述源进程为下述其中一个:所述目标进程自身;所述目标进程之外的其他用户进程。
17.一种电子设备,其特征在于,包括:
存储器,用于存储由所述电子设备的一个或多个处理器执行的指令;
处理器,当所述处理器执行所述存储器中的所述指令时,可使得所述电子设备执行权利要求1~16任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,该指令在计算机上执行时可使所述计算机执行权利要求1~16任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010400975.9A CN113672445A (zh) | 2020-05-13 | 2020-05-13 | 记录目标程序运行状态信息的方法以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010400975.9A CN113672445A (zh) | 2020-05-13 | 2020-05-13 | 记录目标程序运行状态信息的方法以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113672445A true CN113672445A (zh) | 2021-11-19 |
Family
ID=78536776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010400975.9A Pending CN113672445A (zh) | 2020-05-13 | 2020-05-13 | 记录目标程序运行状态信息的方法以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672445A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114339574A (zh) * | 2021-12-29 | 2022-04-12 | 锐迪科创微电子(北京)有限公司 | 耳机运行方法、装置以及电子设备 |
CN116701134A (zh) * | 2022-10-14 | 2023-09-05 | 荣耀终端有限公司 | 一种数据处理方法和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188217A1 (en) * | 2002-03-27 | 2003-10-02 | International Business Machines Corporation | Method and apparatus for controlling the termination of processes in response to a shutdown command |
CN105335651A (zh) * | 2015-10-22 | 2016-02-17 | 成都卫士通信息产业股份有限公司 | 一种基于Linux操作系统的进程防护方法 |
CN109086179A (zh) * | 2018-08-20 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种程序异常情况下的处理方法和装置 |
CN109309585A (zh) * | 2018-09-21 | 2019-02-05 | 郑州云海信息技术有限公司 | 一种日志收集方法、装置以及设备 |
CN109783261A (zh) * | 2018-12-14 | 2019-05-21 | 平安科技(深圳)有限公司 | 终端应用的崩溃处理方法及装置、电子设备、存储介质 |
CN110806926A (zh) * | 2019-09-05 | 2020-02-18 | 华为技术有限公司 | 一种资源管控方法及设备 |
-
2020
- 2020-05-13 CN CN202010400975.9A patent/CN113672445A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188217A1 (en) * | 2002-03-27 | 2003-10-02 | International Business Machines Corporation | Method and apparatus for controlling the termination of processes in response to a shutdown command |
CN105335651A (zh) * | 2015-10-22 | 2016-02-17 | 成都卫士通信息产业股份有限公司 | 一种基于Linux操作系统的进程防护方法 |
CN109086179A (zh) * | 2018-08-20 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种程序异常情况下的处理方法和装置 |
CN109309585A (zh) * | 2018-09-21 | 2019-02-05 | 郑州云海信息技术有限公司 | 一种日志收集方法、装置以及设备 |
CN109783261A (zh) * | 2018-12-14 | 2019-05-21 | 平安科技(深圳)有限公司 | 终端应用的崩溃处理方法及装置、电子设备、存储介质 |
CN110806926A (zh) * | 2019-09-05 | 2020-02-18 | 华为技术有限公司 | 一种资源管控方法及设备 |
Non-Patent Citations (2)
Title |
---|
NUMEN_2010: "关于SIGKILL SIGQUIT", Retrieved from the Internet <URL:https://blog.csdn.net/numen_2010/article/details/44618189> * |
王二の黄金时代: "Android app 捕获系统信号,避免被信号kill", Retrieved from the Internet <URL:https://blog.csdn.net/u012459903/article/details/108646194> * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114339574A (zh) * | 2021-12-29 | 2022-04-12 | 锐迪科创微电子(北京)有限公司 | 耳机运行方法、装置以及电子设备 |
CN116701134A (zh) * | 2022-10-14 | 2023-09-05 | 荣耀终端有限公司 | 一种数据处理方法和电子设备 |
CN116701134B (zh) * | 2022-10-14 | 2024-05-17 | 荣耀终端有限公司 | 一种数据处理方法和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11803451B2 (en) | Application exception recovery | |
EP4145286A1 (en) | Memory management method and electronic device | |
US11853820B2 (en) | Cross-process communication method, apparatus, and device | |
WO2018161813A1 (zh) | 一种资源加载方法及装置 | |
WO2020173377A1 (zh) | 一种日志信息生成方法、装置及电子设备 | |
WO2021190354A1 (zh) | 一种采集追踪trace调用链的方法和电子设备 | |
CN114489917B (zh) | 应用程序异常退出的处理方法、电子设备和可读存储介质 | |
WO2023051355A1 (zh) | 权限检查的方法和电子设备 | |
CN113672445A (zh) | 记录目标程序运行状态信息的方法以及电子设备 | |
CN114020652B (zh) | 一种应用程序的管理方法及电子设备 | |
EP4206864A1 (en) | Process scheduling method and terminal device | |
CN114625545A (zh) | 进程持锁检测方法及其电子设备和可读介质 | |
CN115017534B (zh) | 文件处理权限控制方法、装置及存储介质 | |
CN115794361A (zh) | 管理内存的方法和电子设备 | |
CN111381996B (zh) | 内存异常处理方法及装置 | |
CN115033193B (zh) | 转屏处理方法、装置、介质及电子设备 | |
CN116450473A (zh) | 踩内存问题的定位方法和电子设备 | |
CN112764811B (zh) | 一种摄像头的检测方法及电子设备 | |
CN116088955B (zh) | 进程处理方法和终端设备 | |
CN114816031B (zh) | 终端设备的省电方法、终端设备及介质 | |
WO2024082801A1 (zh) | 复位方法和电子设备 | |
CN116088970B (zh) | 控制应用调用的方法及相关装置 | |
CN117369987A (zh) | 一种计算装置及相关任务执行调度方法 | |
CN116954936A (zh) | 进程间通信方法和电子设备 | |
CN115599475A (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 |