CN116450398A - 异常回溯方法、装置、设备和介质 - Google Patents

异常回溯方法、装置、设备和介质 Download PDF

Info

Publication number
CN116450398A
CN116450398A CN202310436859.6A CN202310436859A CN116450398A CN 116450398 A CN116450398 A CN 116450398A CN 202310436859 A CN202310436859 A CN 202310436859A CN 116450398 A CN116450398 A CN 116450398A
Authority
CN
China
Prior art keywords
information
stack
register
backtracking
memory mapping
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
CN202310436859.6A
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.)
Ecarx Hubei Tech Co Ltd
Original Assignee
Ecarx Hubei Tech 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 Ecarx Hubei Tech Co Ltd filed Critical Ecarx Hubei Tech Co Ltd
Priority to CN202310436859.6A priority Critical patent/CN116450398A/zh
Publication of CN116450398A publication Critical patent/CN116450398A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0739Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种异常回溯方法、装置、设备和介质,该方法用于操作系统,操作系统包括用户空间和内核空间,该方法包括:用户空间进程接收的异常信号为内核转储信号时,从内核空间收集寄存器信息、内存映射信息和栈信息,并根据寄存器信息、内存映射信息和栈信息回溯异常位置。本申请的方案,在用户空间进程发生异常时,从内核空间中仅收集与栈回溯有关的寄存器信息、内存映射信息和栈信息,减少栈回溯信息对存储空间的占用,并且能够根据收集的寄存器信息、内存映射信息和栈信息有效回溯异常位置。

Description

异常回溯方法、装置、设备和介质
技术领域
本申请涉及座舱技术领域,尤其涉及一种异常回溯方法、装置、设备和介质。
背景技术
车载操作系统越来越多的采用linux操作系统,linux操作系统是基于linux的嵌入式系统,拥有强大的性能,且成本低廉,可以满足汽车行业对操作系统安全性、可靠性和可改造性的要求。
随着linux操作系统的广泛使用,linux操作系统在车载方面的稳定性分析越来越受重视。因此,在装车后用户空间进程发生异常时如何回溯异常位置是较为重要的问题。
发明内容
本申请提供一种异常回溯方法、装置、设备和介质,用以减少栈回溯信息占用的存储空间,有效回溯异常位置。
第一方面,本申请提供一种异常回溯方法,所述方法用于操作系统,所述操作系统包括用户空间和内核空间,所述方法包括:
用户空间进程接收的异常信号为内核转储信号时,从所述内核空间收集寄存器信息、内存映射信息和栈信息;
根据所述寄存器信息、内存映射信息和栈信息回溯异常位置。
可选的,所述方法还包括:
将所述寄存器信息、内存映射信息和栈信息存储于目标文件中;
所述根据所述寄存器信息、内存映射信息和栈信息回溯异常位置,具体包括:
线下从所述目标文件中获取所述寄存器信息、内存映射信息和栈信息,根据线下获取的所述寄存器信息、内存映射信息和栈信息回溯异常位置。
在一些实施例中,所述根据线下获取的所述寄存器信息、内存映射信息和栈信息回溯异常位置,具体包括:
根据所述内存映射信息中最后一列指定的库名字找到对应库,将所述对应库、所述寄存器信息以及所述栈信息置于同一目录;
执行线下解析程序,获取目标架构参数,所述线下解析程序用于根据同一目录中的所述对应库、所述寄存器信息以及所述栈信息确定目标架构,并输出目标架构参数;
根据所述目标架构参数调用开源栈回溯库进行栈回溯,以回溯异常位置。
在一些实施例中,所述根据所述寄存器信息、内存映射信息和栈信息回溯异常位置,具体包括:
根据所述寄存器信息中的程序计数器寄存器的值获取所述用户空间进程发生异常时正在运行的当前指令的地址,获取所述当前指令的地址所在的栈区域;
在所述栈信息中查找与所述栈区域对应的FP寄存器的值、SP寄存器的值以及IR寄存器的值,根据所述FP寄存器的值、SP寄存器的值以及IR寄存器的值回溯上一级调用函数的地址;
根据所述内存映射信息的最后一列指定的库名字查找对应库,在所述对应库存储的内存映射关系中查找与所述上一级调用函数的地址对应的函数名称。
可选的,所述方法将所述寄存器信息、内存映射信息和栈信息存储于目标文件中,具体包括:
发送网络连接消息,以将所述寄存器信息、内存映射信息和栈信息转储于目标文件中。
可选的,所述从所述内核空间收集寄存器信息、内存映射信息和栈信息,具体包括:
判断所述用户空间的最大栈大小配置参数是否大于0,若是,从所述内核空间收集寄存器信息、内存映射信息和栈信息。
可选的,所述异常信号包括第一异常信号或第二异常信号;
所述第一异常信号是所述用户空间进程发生异常时,通过运行库向所述用户空间进程发送的;
所述第二异常信号是所述用户空间进程发生异常时,在内核空间向所述用户空间进程发送的。
第二方面,本申请提供一种异常回溯装置,所述装置包括:
收集模块,用于在用户空间进程接收的异常信号为内核转储信号时,从所述内核空间收集寄存器信息、内存映射信息和栈信息;
回溯模块,用于根据所述寄存器信息、内存映射信息和栈信息回溯异常位置。
第三方面,本申请提供一种电子设备,包括:存储器和处理器;
存储器用于存储指令;处理器用于调用存储器中的指令执行第一方面及第一方面任一种可能的设计中的异常回溯方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机指令,当电子设备的至少一个处理器执行该计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的异常回溯方法。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机指令,当电子设备的至少一个处理器执行该计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的异常回溯方法。
本申请提供的异常回溯方法、装置、设备和介质,用户空间进程接收的异常信号为内核转储信号时,从内核空间收集寄存器信息、内存映射信息和栈信息,并根据寄存器信息、内存映射信息和栈信息回溯异常位置。本申请的方案,在用户空间进程发生异常时,从内核空间中仅收集与栈回溯有关的寄存器信息、内存映射信息和栈信息,减少栈回溯信息对存储空间的占用,并且能够根据收集的寄存器信息、内存映射信息和栈信息有效回溯异常位置。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种异常回溯方法的流程图;
图2为本申请另一实施例提供的一种异常回溯方法的流程图;
图3为本申请一实施例提供的一种异常回溯装置的结构示意图;
图4为本申请一实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
车载操作系统越来越多的采用linux操作系统,linux操作系统是基于linux的嵌入式系统,拥有强大的性能,且成本低廉,可以满足汽车行业对操作系统安全性、可靠性和可改造性的要求。
随着linux操作系统的广泛使用,linux操作系统在车载方面的稳定性分析越来越受重视。目前,针对装车后用户空间进程发生异常时的分析手段可以是通过开启coredump(内核转储),coredump是指当程序出错而异常中断时,linux操作系统会把程序工作的当前状态存储成一个coredunmp文件,而后可以通过coredunm文件进行栈回溯。但是,coredump文件会占用大量的存储空间,对于资源有限的车载行业而言,该分析手段的体验感较差。
目前,还可以通过每个进程都对信号进行重载,在重载函数里进行栈回溯,但是每个进程都进行信号重载则需要每个进程的开发人员做大量重复工作,该分析手段的体验感也较差。且一些开源或项目中三方集成的程序一般不会重载这些函数,无法实现栈回溯。
因此,在用户空间进程发生异常时,如何有效回溯异常位置是较为重要的问题。
针对上述问题,本申请提出了一种异常回溯方法,该方法用于操作系统,操作系统包括内核空间和用户空间,该方法包括:用户空间进程接收的异常信号为内核转储信号时,从内核空间收集寄存器信息、内存映射信息和栈信息,并根据寄存器信息、内存映射信息和栈信息回溯异常位置。由于在用户空间进程发生异常时,从内核空间中仅收集与栈回溯有关的寄存器信息、内存映射信息和栈信息,减少对存储空间的占用,相比于内核转储的方式,本方案占用空间减小了数百到数千倍,从而能够根据收集的寄存器信息、内存映射信息和栈信息有效回溯异常位置。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1示出了本申请一实施例提供的一种异常回溯方法的流程图。如图1所示,以操作系统为执行主体,本实施例的方法可以包括如下步骤:
S101、用户空间进程接收的异常信号为内核转储信号时,从内核空间收集寄存器信息、内存映射信息和栈信息。
上述的操作系统例如为linux操作系统,Linux的虚拟地址空间为0~4G,linux内核将4G的虚拟地址空间分为用户空间和内核空间,用户空间从0到3G(0xc0000000),内核空间占据3G到4G。在用户空间运行的进程为用户空间进程,在内核空间运行的进程为系统进程。
用户空间进程发生异常时,可以通过运行库(libc库)向用户空间进程发送异常信号,也可以在内核空间向用户空间进程发送异常信号,以阻止进程继续运行。例如,用户空间进程发生双重释放(double free)或触发断言(assert)函数时,通过libc库向本进程(用户空间进程)发送第一异常信号,发送第一异常信号前用户空间进程仍然处于用户空间。例如,用户空间进程发生空指针访问时会陷入到内核进行内存异常访问处理,即非法内存访问会在内核空间向本进程(用户空间进程)发送第二异常信号。
用户空间进程接收异常信号后,判断用户空间进程接收的异常信号是否为内核转储(coredump)信号,若是,触发栈回溯收集,即从内核空间中收集寄存器信息、内存映射信息和栈信息。
示例的,寄存器信息可以包括程序计数器(Program Counter,PC寄存器)寄存器的值。每个线程启动的时候,都会创建一个PC寄存器。PC寄存器里保存有当前正在执行的指令的地址。因此,PC寄存器的值可以包括用户进程发生异常时正在运行的当前指令的地址。
栈信息可以包括帧指针(Frame Pointer,FP)寄存器的值、栈指针(StackPointer,SP)寄存器的值以及指令(Instruction Register,IR)寄存器的值。通过FP寄存器就可以找到存储在函数栈中IR寄存器数据,IR寄存器数据就是函数返回地址。同时也可以找到保存在函数栈中的上一级函数FP寄存器数据,这个数据指向了上一级函数的栈底,从而可以获取上一级函数栈中存储的IR寄存器数据和FP寄存器数据,从而能够以FP寄存器为核心,依次找出每个函数栈中存储的IR寄存器数据和FP寄存器数据,计算出函数返回地址和上一级函数栈底地址,从而找出每一级函数调用关系。
内存映射信息可以包括一个磁盘文件与存储空间中的一个缓冲区之间的映射关系。本示例中,遍历current里虚拟内存空间(virtual memory area,vma)的信息就可以获取进程所有的内存映射区域,将文件(file)指针有效的虚拟内存空间合并存储,存储信息包括起始地址,结束地址,类型,进程或库名字,还可以包括进程自身代码段或者加载库的代码段所处位置。
在一些实施例中,在内核空间中收集到寄存器信息、内存映射信息和栈信息后,可以将寄存器信息、内存映射信息和栈信息存储于目标文件中,从而可以线下获取寄存器信息、内存映射信息和栈信息,并进行栈回溯。示例的,可以在收集寄存器信息、内存映射信息和栈信息后,发送网络连接消息,以将寄存器信息、内存映射信息和栈信息存储于目标文件中。目标文件可以包括三个文件,每个文件分别存储寄存器信息、内存映射信息和栈信息。
S102、根据寄存器信息、内存映射信息和栈信息回溯异常位置。
根据寄存器信息、内存映射信息和栈信息进行栈回溯,以回溯异常位置。
在一些实施例中,可以在线下从目标文件中获取寄存器信息、内存映射信息和栈信息后,根据线下获取的寄存器信息、内存映射信息和栈信息回溯异常位置,从而线下进行栈回溯。
本实施例中,可以根据内存映射信息中最后一列指定的库名字找到对应库,对应库中存储有函数地址和函数名称的对应关系。而后,将对应库、寄存器信息以及栈信息置于同一目录中,并执行线下解析程序,线下解析程序能够根据同一目录中的对应库、寄存器信息以及栈信息确定目标架构,输出目标架构参数,目标架构例如可以为x86架构、arm架构等。而后,根据目标架构参数调用开源栈回溯库进行栈回溯,以回溯异常位置。
在一些实施例中,可以根据寄存器信息中的PC寄存器的值获取用户空间进程发生异常时,正在运行的当前指令的地址,获取当前指令的地址所在的栈区域。而后,在栈信息中查找与栈区域对应的FP寄存器的值、SP寄存器的值以及IR寄存器的值,而后根据FP寄存器的值、SP寄存器的值以及IR寄存器的值回溯上一级调用函数的地址,并根据内存映射信息的最后一列指定的库名字查找对应库,在对应库存储的内存映射关系中查找与上一级调用函数的地址对应的函数名称,从而回溯到异常的函数名称。
本申请提供的异常回溯方法,在用户空间进程发生异常时,从内核空间仅收集与栈回溯有关的寄存器信息、内存映射信息和栈信息,减少对存储空间的占用,并且能够根据收集到的寄存器信息、内存映射信息和栈信息有效回溯异常位置。
图2示出了本申请一实施例提供的一种异常回溯方法的流程图。如图2所示,以操作系统为执行主体,本实施例的方法可以包括如下步骤:
S201、用户空间进程发生异常时,通过运行库向用户空间进程发生第一异常信号。
本实施例中,用户空间进程发生双重释放(double free)或触发断言(assert)函数时,通过libc库向本进程(用户空间进程)发送第一异常信号,发送第一异常信号前用户空间进程仍然处于用户空间。
S202、用户空间进程发生异常时,在内核空间向用户空间进程发送第二异常信号。
本实施例中,用户空间进程发生空指针访问时会陷入到内核进行内存异常访问处理,即非法内存访问会在内核空间向本进程(用户空间进程)发送第二异常信号。
S203、用户空间进程接收的第一异常信号或第二异常信号为内核转储信号时,判断用户空间的最大栈大小配置参数是否大于0。
本实施例中,预先配置用户空间的最大栈大小配置参数,最大栈大小配置参数的具体数值不进行限定。
用户空间的最大栈大小配置参数大于0时,执行步骤S204,相当于给用户空间提供一个开关。
S204、从内核空间收集寄存器信息、内存映射信息和栈信息。
S205、发送网络连接消息,以将寄存器信息、内存映射信息和栈信息转储于目标文件中。
本实施例中,从内核空间收集寄存器信息、内存映射信息和栈信息后,发送netlink信息,便于关注栈回溯信息收集完成的模块获得消息,比如日志转储模块收到信息后进行异常信息的转储收集。至此,完成栈最小信息收集。
S206、线下从目标文件中获取寄存器信息、内存映射信息和栈信息,根据内存映射信息中最后一列指定的库名字找到对应库,将对应库、寄存器信息以及栈信息置于同一目录下。
本实施例中,对应库例如可以是非strip过的库,以便可以回溯出函数名称。
S207、执行线下解析程序,获取目标架构参数。
本实施例中,执行开发好的线下解析程序,线下解析程序会根据输入参数判断是按照x86还是arm结构解析。线下解析程序还可以读取栈回溯信息的三个文件,即寄存器信息所在文件、内存映射信息所在文件以及栈信息所在文件,并做必要的初始化。
S208、根据目标架构参数调用开源栈回溯库进行栈回溯,以回溯异常位置。
本实施例中,根据传入的目标架构参数,调用开源的libunwindstack库以eh_frame方式进行栈回溯,并打印栈回溯结果。
本实施例中步骤S201与步骤S202,并不受所描述的动作顺序的限制,步骤S201与步骤S202可以采用其他顺序或者同时进行。
本申请提供的异常回溯方法,在用户空间进程发生异常时,从内核空间仅收集与栈回溯有关的寄存器信息、内存映射信息和栈信息,减少对存储空间的占用,并且能够线下根据收集到的寄存器信息、内存映射信息和栈信息有效回溯异常位置。
图3示出了本申请一实施例提供的一种异常回溯装置的结构示意图,如图3所示,本实施例的异常回溯装置10用于实现上述任一方法实施例中对应于操作系统的操作,本实施例的异常回溯装置10包括:
收集模块11,用于在用户空间进程接收的异常信号为内核转储信号时,从内核空间收集寄存器信息、内存映射信息和栈信息;
回溯模块12,用于根据寄存器信息、内存映射信息和栈信息回溯异常位置。
在一些实施例中,异常回溯装置还可以包括日志转储模块,日志转储模块接收到收集模块11发送的网络连接信息(netlink信息)后,将寄存器信息、内存映射信息和栈信息存储于目标文件中,则回溯模块12在回溯异常时,可以线下从目标文件中获取寄存器信息、内存映射信息和栈信息,并根据线下获取的寄存器信息、内存映射信息和栈信息回溯异常位置。
本申请实施例提供的异常回溯装置10,可执行上述方法实施例,其具体实现原理和技术效果,可参见上述方法实施例,本实施例此处不再赘述。
图4示出了本申请实施例提供的一种电子设备的硬件结构示意图。如图4所示,该电子设备20,用于实现上述任一方法实施例中对应于操作系统的操作,本实施例的电子设备20可以包括:存储器21,处理器22和通信接口23。
存储器21,用于存储计算机指令。该存储器21可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非易失性存储(Non-Volatile Memory,NVM),例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
处理器22,用于执行存储器存储的计算机指令,以实现上述实施例中的异常回溯方法。具体可以参见前述方法实施例中的相关描述。该处理器22可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
可选地,存储器21既可以是独立的,也可以跟处理器22集成在一起。
通信接口23,可以与处理器22连接。处理器22可以控制通信接口23来实现信息的接收和发送的功能。
本实施例提供的电子设备可用于执行上述的异常回溯方法,其实现方式和技术效果类似,本实施例此处不再赘述。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机指令,计算机指令被处理器执行时用于实现上述的各种实施方式提供的方法。
本申请还提供一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。设备的至少一个处理器可以从计算机可读存储介质中读取该计算机指令,至少一个处理器执行该计算机指令使得设备实施上述的各种实施方式提供的方法。
本申请实施例还提供一种芯片,该芯片包括存储器和处理器,所述存储器用于存储计算机指令,所述处理器用于从所述存储器中调用并运行所述计算机指令,使得安装有所述芯片的设备执行如上各种可能的实施方式中所述的方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种异常回溯方法,其特征在于,所述方法用于操作系统,所述操作系统包括用户空间和内核空间,所述方法包括:
用户空间进程接收的异常信号为内核转储信号时,从所述内核空间收集寄存器信息、内存映射信息和栈信息;
根据所述寄存器信息、内存映射信息和栈信息回溯异常位置。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述寄存器信息、内存映射信息和栈信息存储于目标文件中;
所述根据所述寄存器信息、内存映射信息和栈信息回溯异常位置,具体包括:
线下从所述目标文件中获取所述寄存器信息、内存映射信息和栈信息,根据线下获取的所述寄存器信息、内存映射信息和栈信息回溯异常位置。
3.根据权利要求2所述的方法,其特征在于,所述根据线下获取的所述寄存器信息、内存映射信息和栈信息回溯异常位置,具体包括:
根据所述内存映射信息中最后一列指定的库名字找到对应库,将所述对应库、所述寄存器信息以及所述栈信息置于同一目录;
执行线下解析程序,获取目标架构参数,所述线下解析程序用于根据同一目录中的所述对应库、所述寄存器信息以及所述栈信息确定目标架构,并输出目标架构参数;
根据所述目标架构参数调用开源栈回溯库进行栈回溯,以回溯异常位置。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,所述根据所述寄存器信息、内存映射信息和栈信息回溯异常位置,具体包括:
根据所述寄存器信息中的程序计数器寄存器的值获取所述用户空间进程发生异常时正在运行的当前指令的地址,获取所述当前指令的地址所在的栈区域;
在所述栈信息中查找与所述栈区域对应的FP寄存器的值、SP寄存器的值以及IR寄存器的值,根据所述FP寄存器的值、SP寄存器的值以及IR寄存器的值回溯上一级调用函数的地址;
根据所述内存映射信息的最后一列指定的库名字查找对应库,在所述对应库存储的内存映射关系中查找与所述上一级调用函数的地址对应的函数名称。
5.根据权利要求2所述的方法,其特征在于,所述方法将所述寄存器信息、内存映射信息和栈信息存储于目标文件中,具体包括:
发送网络连接消息,以将所述寄存器信息、内存映射信息和栈信息转储于目标文件中。
6.根据权利要求1-3中任意一项所述的方法,其特征在于,所述从所述内核空间收集寄存器信息、内存映射信息和栈信息,具体包括:
判断所述用户空间的最大栈大小配置参数是否大于0,若是,从所述内核空间收集寄存器信息、内存映射信息和栈信息。
7.根据权利要求1-3中任意一项所述的方法,其特征在于,所述异常信号包括第一异常信号或第二异常信号;
所述第一异常信号是所述用户空间进程发生异常时,通过运行库向所述用户空间进程发送的;
所述第二异常信号是所述用户空间进程发生异常时,在内核空间向所述用户空间进程发送的。
8.一种异常回溯装置,其特征在于,所述装置包括:
收集模块,用于在用户空间进程接收的异常信号为内核转储信号时,从所述内核空间收集寄存器信息、内存映射信息和栈信息;
回溯模块,用于根据所述寄存器信息、内存映射信息和栈信息回溯异常位置。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至7中任意一项所述的异常回溯方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如权利要求1至7中任一项所述的异常回溯方法。
CN202310436859.6A 2023-04-21 2023-04-21 异常回溯方法、装置、设备和介质 Pending CN116450398A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310436859.6A CN116450398A (zh) 2023-04-21 2023-04-21 异常回溯方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310436859.6A CN116450398A (zh) 2023-04-21 2023-04-21 异常回溯方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN116450398A true CN116450398A (zh) 2023-07-18

Family

ID=87133446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310436859.6A Pending CN116450398A (zh) 2023-04-21 2023-04-21 异常回溯方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN116450398A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117453446A (zh) * 2023-12-15 2024-01-26 荣耀终端有限公司 一种内存泄露定位的辅助信息获取方法及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117453446A (zh) * 2023-12-15 2024-01-26 荣耀终端有限公司 一种内存泄露定位的辅助信息获取方法及电子设备
CN117453446B (zh) * 2023-12-15 2024-04-26 荣耀终端有限公司 一种内存泄露定位的辅助信息获取方法及电子设备

Similar Documents

Publication Publication Date Title
CN109597677B (zh) 用于处理信息的方法和装置
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
US9201749B2 (en) Diagnosing code using single step execution
US8930761B2 (en) Test case result processing
US9612837B2 (en) Trace method and information processing apparatus
US20140129875A1 (en) Method for reading kernel log upon kernel panic in operating system
CN110955598B (zh) 一种内核态程序的断点处理方法及装置
CN109739824B (zh) 日志获取方法及设备
US5363502A (en) Hot stand-by method and computer system for implementing hot stand-by method
CN116450398A (zh) 异常回溯方法、装置、设备和介质
CN114168222A (zh) 一种启动耗时的获取方法、装置、终端设备和存储介质
US20040168157A1 (en) System and method for creating a process invocation tree
CN114490394A (zh) 测试范围确定方法、装置、设备和介质
US5963741A (en) Information processor which rewrites instructions in program to dynamically change program structure and method therefor
CN113342431B (zh) 函数调用栈回溯、程序异常处理方法、装置、设备及介质
CN113986622A (zh) Sdk异常的自检方法、装置、介质和计算设备
CN114691496A (zh) 单元测试方法、装置、计算设备及介质
US8327338B2 (en) Overlay identification of data processing target structure
CN113760631A (zh) 页面加载时长确定方法、装置、设备和存储介质
US11663064B1 (en) System and method for generating a guest operating system crash dump
CN112416695B (zh) 一种全局变量监控方法、装置、设备及存储介质
US20230350788A1 (en) Method and system for providing delta code coverage information for work items
JP2000076095A (ja) プログラムトレース装置およびプログラムトレース方法およびそのプログラムを記憶した記憶媒体
JP2853774B2 (ja) プログラマブルコントローラ
CN114265779A (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