CN115454686A - 一种信息处理方法及装置、存储介质 - Google Patents

一种信息处理方法及装置、存储介质 Download PDF

Info

Publication number
CN115454686A
CN115454686A CN202110641984.1A CN202110641984A CN115454686A CN 115454686 A CN115454686 A CN 115454686A CN 202110641984 A CN202110641984 A CN 202110641984A CN 115454686 A CN115454686 A CN 115454686A
Authority
CN
China
Prior art keywords
information
stack
abnormal
information processing
backtracking
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
CN202110641984.1A
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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology 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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202110641984.1A priority Critical patent/CN115454686A/zh
Publication of CN115454686A publication Critical patent/CN115454686A/zh
Pending legal-status Critical Current

Links

Images

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/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • 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

Abstract

本发明公开了一种信息处理方法及装置、存储介质,信息处理方法包括:在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数,并启动信息处理装置中的操作程序;在检测到操作程序运行异常的情况下,利用栈回溯接口函数获取操作程序异常时的栈回溯信息;并利用异常栈接口函数获取操作程序异常时的异常栈信息;根据异常栈信息和栈回溯信息,定位操作程序运行异常时的异常代码,提高了定位异常代码时的准确性。

Description

一种信息处理方法及装置、存储介质
技术领域
本发明涉及物联网技术领域,尤其涉及一种信息处理方法及装置、存储介质。
背景技术
OneOs是2020年针对物联网领域推出的一款实时操作系统,该操作系统由于具有可裁剪、跨平台、低功耗、高安全性等特点,深受人们的青睐。
现有技术中,在操作系统出现问题的情况下,操作系统就输出出现问题时的异常现场寄存器信息和发生错误的线程信息,操作人员就根据异常现场寄存器信息和发生错误的线程信息来确定系统中出现错误时的代码的位置,如此,降低了定位的错误代码的准确性。
发明内容
为解决上述技术问题,本发明期望提供一种信息处理方法及装置、存储介质,提高了定位的异常代码的准确性。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种信息处理方法,包括:
在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数,并启动所述信息处理装置中的操作程序;
在检测到所述操作程序运行异常的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息;并利用所述异常栈接口函数获取所述操作程序异常时的异常栈信息;
根据所述异常栈信息和所述栈回溯信息,定位所述操作程序运行异常时的异常代码。
第二方面,本发明实施例提供了一种信息处理装置,所述装置包括:
注册单元,用于在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数;
启动单元,用于启动所述信息处理装置中的操作程序;
获取单元,用于在检测到所述操作程序运行异常的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息;并利用所述异常栈接口函数获取所述操作程序异常时的异常栈信息;
定位单元,用于根据所述异常栈信息和所述栈回溯信息,定位所述操作程序运行异常时的异常代码。
第三方面,本发明实施例又提供了一种信息处理装置,所述装置包括:
存储器、处理器和通信总线,所述存储器通过所述通信总线与所述处理器进行通信,所述存储器存储所述处理器可执行的信息处理的程序,当所述信息处理的程序被执行时,通过所述处理器执行上述所述的信息处理方法。
第四方面,本发明实施例提供了一种存储介质,其特征在于,其上存储有计算机程序,应用于信息处理装置,该计算机程序被处理器执行时实现上述所述的信息处理方法。
本发明提供了一种信息处理方法及装置、存储介质,信息处理方法包括:在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数,并启动信息处理装置中的操作程序;在检测到操作程序运行异常的情况下,利用栈回溯接口函数获取操作程序异常时的栈回溯信息;并利用异常栈接口函数获取操作程序异常时的异常栈信息;根据异常栈信息和栈回溯信息,定位操作程序运行异常时的异常代码。利用上述信息处理方法,信息处理装置通过在信息处理装置启动的情况下注册栈回溯接口函数和异常栈接口函数,使得信息处理装置在检测到操作程序运行异常的情况下,信息处理装置就可以利用栈回溯接口函数直接获取到操作程序异常时的栈回溯信息,利用异常栈接口函数直接获取到操作程序异常时的异常栈信息,以利用异常栈信息和栈回溯信息来定位操作程序异常时的异常代码,提高了定位异常代码时的准确性。
附图说明
图1为本发明实施例提供的一种信息处理方法流程图;
图2为本发明实施例提供的一种示例性的栈回溯信息输出示意图;
图3为本发明实施例提供的一种示例性的线程信息和内存信息输出示意图;
图4为本发明实施例提供的一种示例性的异常栈信息和寄存器输出示意图;
图5为本发明实施例提供的一种示例性的信息处理方法流程图;
图6为本发明实施例提供的一种信息处理装置的组成结构示意图一;
图7为本发明实施例提供的一种信息处理装置的组成结构示意图二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
现有技术中,无论是利用单片机(AVR、STM32)等平台做裸机开发,还是利用实时内核(uCOS)、嵌入式实时操作系统(FreeRTOS)等物联网操作系统做多线程应用开发,基本都是采用C语言,开发者都会遇到过程序卡死、死机等问题。如何去处理这些异常代码,避免程序卡死或者死机等问题也变成开发人员所关心的头等大事。对于资深的程序员来说,可以通过良好的编程习惯,以及后期的大量测试来发现和解决异常。而对于普通的程序员来说,一般都是通过仿真器去单步调试,定位到相关位置的代码后,再去推敲原因,十分浪费时间。
操作系统(OneOS)作为一款实时的多线程物联网操作系统,在对程序异常处理的技术上主要存在两个缺点:
1)代码异常时输出有效信息较少、处理能力较为薄弱
现有的系统源码中,对于出现错误代码的处理方式是串口输出异常现象寄存器信息(诸如psr、pc、r00、r01、r02等)和发生“hard fault”的线程,打印的信息非常简单。将这段信息处理放置在一个异常处理函数中,当系统发生异常处理时会跳到该函数,打印上面所述的信息。当然,这种思路是正确的,并且也能解决一小部分问题,但是对于异常信息的输出、异常代码的定位以及异常信息处理等方面较为薄弱。
2)调试难度较为繁琐
只靠输出的异常寄存器信息,是很难还原错误场景的函数调用逻辑,而且还得花费大量的时间去进行繁琐的分析,这为开发者很直观的定位到错误点增加了难度。
对于现有技术中存在的问题,具体可通过实施例一中的方法进行解决。
实施例一
本发明实施例提供了一种信息处理方法,应用于信息处理装置,图1为本发明实施例提供的一种信息处理方法流程图,如图1所示,信息处理方法可以包括:
S101、在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数,并启动信息处理装置中的操作程序。
本发明实施例提供的一种信息处理方法应用于信息处理装置定位操作程序运行异常时的异常代码的场景下。
在本申请实施例中,信息处理装置可以以各种形式来实施。例如,本申请中描述的信息处理装置可以包括诸如手机、手表、平板电脑、笔记本电脑、掌上电脑、服务器、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable MediaPlayer,PMP)、导航装置、可穿戴设备、智能手环、计步器等装置,以及诸如数字TV、台式计算机、操作系统等装置。
在本申请实施例中,信息处理装置若为操作系统,则该信息处理装置具体可以为OneOs操作系统,也可以为其他的操作系统,具体的可根据实际情况进行确定,本申请实施例对此不作限定。
在本申请实施例中,在信息处理装置上电的情况下,信息处理装置就可以启动了。信息处理装置每上电一次,信息处理装置就启动一次,信息处理装置就启动操作程序一次,同时执行一次注册栈信息获取函数的过程。其中,栈信息获取函数包括栈回溯接口函数和异常栈接口函数。
在本申请实施例中,栈信息获取函数包括异常钩子函数(exception_hook)和断言钩子函数(assert_hook);其中,异常钩子函数中包括栈回溯接口函数和异常栈接口函数;断言钩子函数也包括栈回溯接口函数和异常栈接口函数。在信息处理装置检测到操作程序处于断言异常的情况下,信息处理装置就启动断言钩子函数,利用断言钩子函数中的栈回溯接口函数获取操作程序处于断言异常的情况下的栈回溯信息;利用断言钩子函数中的异常栈接口函数获取操作程序处于断言异常的情况下的异常栈信息。在信息处理装置检测到操作程序处于非断言异常的情况下,信息处理装置就启动异常钩子函数,利用异常钩子函数中的栈回溯接口函数获取操作程序处于非断言异常的情况下的栈回溯信息;利用异常钩子函数中的异常栈接口函数获取操作程序处于非断言异常的情况下的异常栈信息。
需要说明的是,信息处理装置可以利用for循环来直接输出异常栈信息,信息处理装置也可以利用其他的方式输出异常栈信息,具体的可根据实际情况进行确定,本申请实施例对此不作限定。
在本申请实施例中,信息处理装置可以通过定义堆栈指针寄存器对应的回溯深度和回溯地址,并设置与该堆栈指针寄存器的值对应的栈回溯接口函数,以在信息处理装置检测到操作程序运行异常的情况下,信息处理装置就通过该栈回溯接口函数从堆栈指针寄存器中获取栈回溯信息,并输出该栈回溯信息。
需要说明的是,信息处理装置可以利用for循环来输出栈回溯信息,信息处理装置也可以利用其他的方式输出栈回溯信息,具体的可根据实际情况进行确定,本申请实施例对此不作限定。
示例性的,信息处理装置可以利用图2的显示方式来输出栈回溯信息(回溯深度和回溯地址),其中,在第一行显示调用栈,第二行为调用栈开始,第五行为调用栈结束,第三行为回溯深度为0x00000000;第四行显示回溯地址为0x0800817a。
在本申请实施例中,操作程序可以为信息处理装置中的硬件操作被执行时的程序。
在本申请实施例中,在信息处理装置启动的情况下,信息处理装置还可以获取硬件操作程序对应的总堆栈信息和总代码段信息。
需要说明的是,总堆栈信息包括操作程序对应的总堆栈的起始地址信息和总堆栈的大小信息。总代码端信息包括操作程序对应的总代码的起始地址信息和总代码的大小信息。
在本申请实施例中,信息处理装置可以通过获取到的总堆栈的大小信息来确定信息处理装置中的硬件是否正常,在确定出信息处理装置中的硬件异常的情况下,信息处理装置就输出告警信息,在确定出信息处理装置中的硬件正常的情况下,信息处理装置就生成一个判断标志(init_ok),以利用该判断标志进行后续判断。然后信息处理装置就处于正常运行状态,在操作程序运行异常(出现bug的情况下)的情况下,此时信息处理装置中设置的触发函数就会触发信息处理装置跳转至栈信息获取函数中,以利用栈信息获取函数来获取操作程序异常时的栈回溯信息和异常栈信息。
S102、在检测到操作程序运行异常的情况下,利用栈回溯接口函数获取操作程序异常时的栈回溯信息;并利用异常栈接口函数获取操作程序异常时的异常栈信息。
在本申请实施例中,信息处理装置在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数,并启动信息处理装置中的操作程序之后,信息处理装置在检测到操作程序运行异常的情况下,信息处理装置就利用栈回溯接口函数获取操作程序异常时的栈回溯信息;并利用异常栈接口函数获取操作程序异常时的异常栈信息。
在本申请实施例中,操作程序运行异常的情况包括执行非法指令、访问非法内存、内存申请失败、代码跑飞、内存溢出等情况。
在本申请实施例中,栈回溯信息包括当前回溯深度(cur_depth)和回溯地址数组(call_stack_buf)。异常栈信息包括堆栈参数(stack_pointer、saved_regs_addr)、异常状态标志(on_fault、on_thread_before_faut)、堆栈溢出状态标志(stack_is_overflow)、堆栈起始地址(stack_start_addr),堆栈大小(stack_size)等。
在本申请实施例中,信息处理装置通过计算异常时刻连接寄存器(LinkRegister,LR)和堆栈指针寄存器(sp)的值,定义和赋值堆栈参数(stack_pointer、saved_regs_addr)、异常状态标志(on_fault、on_thread_before_faut)、寄存器名称(constchar*regs_name[])、堆栈溢出状态标志(stack_is_overflow)、堆栈起始地址(stack_start_addr)、堆栈大小(stack_size)等。在信息处理装置检测到操作程序卡死、或者信息处理装置死机的情况下,信息处理装置就确定操作程序运行异常,在操作程序运行异常的情况下,信息处理装置可以判断操作程序运行异常时的堆栈地址是否不在堆栈地址范围内,若操作程序运行异常时的堆栈地址不在堆栈地址范围内,则赋值堆栈溢出状态标志stack_is_overflow为1。并将提取的堆栈起始地址、堆栈大小、堆栈参数作为形参跳转到堆栈转存函数dump_stack()中。在dump_stack()函数中,信息处理装置会对栈溢出的特殊情形进行考虑,即当stack_is_overflow为1时,信息处理装置通过判断状态变量on_thread_before_fault来输出此刻是线程堆栈还是主堆栈,然后对已经溢出的值stack_pointer重新赋值。当然这种情形是特殊情形,正常是不应该存在的。正常应该是信息处理装置直接跳过这个判断,直接利用异常栈接口函数获取异常栈信息,再利用for循环来直接输出异常栈信息,包括此时的堆栈地址和堆栈的大小。
在本申请实施例中,信息处理装置利用异常栈接口函数获取操作程序异常时的异常栈信息之后,信息处理装置还会根据异常栈信息和栈回溯信息,确定操作程序异常时的异常原因;信息处理装置显示异常原因。
在本申请实施例中,异常原因包括中断中发生断言、硬错误、总线错误、寄存器管理错误、调试错误、存储器管理错误等。
在本申请实施例中,信息处理装置中包括预设栈信息和预设栈回溯信息与预设异常原因之间的对应关系,信息处理装置在获取到异常栈信息和栈回溯信息之后,信息处理装置就可以在预设栈信息和预设栈回溯信息与预设异常原因之间的对应关系中确定出与该异常栈信息和栈回溯信息对应的异常原因。
在本申请实施例中,信息处理装置还设置有显示设备,信息处理装置可以利用该显示设备显示该异常原因,该显示设备包括显示器或者显示屏,具体的可根据实际情况进行确定,本申请实施例对此不作限定。
需要说明的是,信息处理装置也可以利用不同的显示灯来显示不同的异常原因,信息处理装置还可以利用不同的声音信息来表示不同的异常原因,具体的可根据实际情况进行确定,本申请实施例对此不作限定。
在本申请实施例中,信息处理装置在检测到操作程序运行异常的情况下,利用栈回溯接口函数获取操作程序异常时的栈回溯信息的过程,包括:信息处理装置在检测到操作程序处于异常或者断言失败的情况下,信息处理装置就利用栈回溯接口函数获取操作程序异常时的栈回溯信息。
S103、根据异常栈信息和栈回溯信息,定位操作程序运行异常时的异常代码。
在本申请实施例中,信息处理装置利用栈回溯接口函数获取操作程序异常时的栈回溯信息;并利用异常栈接口函数获取操作程序异常时的异常栈信息之后,信息处理装置就可以根据异常栈信息和栈回溯信息,定位操作程序运行异常时的异常代码。
在本申请实施例中,信息处理装置中配置有调试工具,信息处理装置可以通过调试工具,并根据异常栈信息和栈回溯信息,来定位操作程序运行异常时的异常代码。
需要说明的是,该调试工具可以为addr2line命令,也可以为其他的调试工具,具体的可根据实际情况进行确定,本申请实施例对此不作限定。
在本申请实施例中,信息处理装置注册栈回溯接口函数和异常栈接口函数的过程,还包括信息处理装置获取操作程序对应的总堆栈信息;相应的,信息处理装置根据异常栈信息和栈回溯信息,定位操作程序运行异常时的异常代码的过程,包括:信息处理装置根据总堆栈信息、异常栈信息和栈回溯信息,定位程序运行异常时的异常代码。
在本申请实施例中,总堆栈信息具体为信息处理装置启动的情况下,信息处理装置获取到的硬件操作程序对应的堆栈信息。
需要说明的是,信息处理装置可以通过调试工具,并利用异常栈信息和栈回溯信息从总堆栈信息中,定位出程序运行异常时的异常代码。具体的,信息处理装置可以通过异常栈信息从总堆栈信息中确定出异常代码的位置范围,再根据栈回溯信息中的回溯地址和回溯深度从异常代码的位置范围中查找到异常代码的具体位置。
在本申请实施例中,信息处理装置利用异常栈接口函数获取操作程序异常时的异常栈信息的过程,还包括:信息处理装置获取操作程序异常时的线程信息、内存信息和寄存器信息;相应的,信息处理装置根据异常栈信息和栈回溯信息,定位操作程序运行异常时的异常代码的过程,包括:根据线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,定位操作程序运行异常时的异常代码。
在本申请实施例中,信息处理装置可以根据线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,从总堆栈信息中定位异常代码。
需要说明的是,信息处理装置可以利用栈信息获取函数来获取操作程序异常时的线程信息、内存信息和寄存器信息。
在本申请实施例中,线程信息包括线程名称、优先级、运行状态、线程堆栈大小、最大使用情况、运行时钟、错误等信息。信息处理装置通过线程信息来判断线程堆栈是否过小。
在本申请实施例中,信息处理装置可以通过链表循环与提取的方式来获取线程信息,信息处理装置可以通过其他的方式来获取线程信息,具体的可根据实际情况进行确定,本申请实施例对此不作限定。
在本申请实施例中,内存信息包括总内存、已使用内存和最大分配内存。
在本申请实施例中,栈信息获取函数中设置有内存获取接口,信息处理装置可以通过该内存获取接口来获取内存信息。
示例性的,信息处理装置可以通过图3所示的方式来显示线程信息和内存信息。其中,在图3的上半栏显示线程信息、下半栏用于显示内存信息。上半栏显示线程信息中包括3个线程:tshell、空闲和主线程,tshell线程的优先级(pri)为20、状态为暂停、堆栈指针寄存器(sp)信息为0x0000006c、堆栈大小为0x00001000、最大使用信息为3%、运行时钟为0x00000009,错误信息为000;空闲线程的优先级(pri)为31、状态为完成准备、堆栈指针寄存器(sp)信息为0x00000048、堆栈大小为0x00000100、最大使用信息34%、运行时钟为0x00000001,错误信息为000;主线程的优先级(pri)为10、状态为完成准备、堆栈指针寄存器(sp)信息为0x0000006c、堆栈大小为0x00000800、最大使用信息为10%、运行时钟为0x00000013,错误信息为000。下半栏用于显示内存信息包括:总内存为61840、使用内存为7072、最大分配内存为70724。
在本申请实施例中,寄存器信息具体为操作程序运行异常时的寄存器的信息,包括R0寄存器信息、R1寄存器信息、R2寄存器信息、R3寄存器信息、R12寄存器信息、LR寄存器信息、PC寄存器信息、PSR寄存器信息等。
示例性的,信息处理装置可以将异常栈信息和寄存器信息一同进行显示,如图4所示:线程堆栈信息(异常栈信息)包括:地址为0x200016ec,对应的数据为080063e9。寄存器信息包括:R0寄存器信息为0x00000000;R1寄存器信息为0x10000000;R2寄存器信息为0x200001d4;R3寄存器信息为0x00000348;R12寄存器信息为0x08000000;LR寄存器信息为0x0800817b;PC寄存器信息为0x00000000;PSR寄存器信息为0x60000000。
在本申请实施例中,信息处理装置根据线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,定位操作程序运行异常时的异常代码之前,信息处理装置还会获取操作程序编译时的编译文件;相应的,信息处理装置根据线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,定位操作程序运行异常时的异常代码的过程,包括:信息处理装置根据编译文件、线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,定位程序运行异常时的异常代码。
在本申请实施例中,信息处理装置可以通过线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息从编译文件中定位出程序运行异常时的异常代码。
在本申请实施例中,信息处理装置可以通过调试工具,并根据编译文件、总堆栈信息、线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,定位程序运行异常时的异常代码。线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,定位程序运行异常时的异常代码。
示例性的,如图5为本申请实施例提供的一种示例性的信息处理方法流程图:
1、在信息处理装置启动的情况下,信息处理装置就注册栈信息获取函数(断言钩子函数和异常钩子函数),并启动信息处理装置中的操作程序;
需要说明的是,信息处理装置在注册栈信息获取函数的过程中,信息处理装置还会获取总堆栈信息。
2、在信息处理装置确定出操作程序运行处于断言异常的情况下,利用断言钩子函数(栈信息获取函数)获取操作程序异常时的线程信息、内存信息、异常栈信息和异常栈信息;
需要说明的是,信息处理装置在获取异常栈信息之前,信息处理装置会先获取堆栈指针寄存器对应的参数信息,信息处理装置在根据该参数信息确定异常栈地址溢出的情况下,信息处理装置就获取该异常栈信息。
3、信息处理装置获取操作程序编译时的编译文件;
4、信息处理装置根据编译文件、线程信息、内存信息、栈回溯信息和异常栈信息,定位程序运行异常时的异常代码;
需要说明的是,信息处理装置利用调试工具,并根据编译文件、线程信息、内存信息、栈回溯信息和异常栈信息,定位程序运行异常时的异常代码。
5、在信息处理装置确定出操作程序运行处于非断言异常的情况下,信息处理装置就启动异常钩子函数(栈信息获取函数),利用异常钩子函数获取操作程序异常时的线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息;
需要说明的是,信息处理装置在获取异常栈信息之前,信息处理装置会先获取堆栈指针寄存器和连接寄存器对应的参数信息,信息处理装置在根据该参数信息确定异常栈地址溢出的情况下,信息处理装置就获取当前线程堆栈的地址信息和堆栈大小信息,信息处理装置在确定出当前线程堆栈的地址溢出的情况下,信息处理装置就获取该异常栈信息。
6、信息处理装置获取操作程序编译时的编译文件;
7、信息处理装置根据编译文件、线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,定位程序运行异常时的异常代码。
8、信息处理装置根据编译文件、线程信息、内存信息、寄存器信息、栈回溯信息和异常栈信息,确定并输出操作程序异常时的异常原因。
可以理解的是,信息处理装置通过在信息处理装置启动的情况下注册栈回溯接口函数和异常栈接口函数,使得信息处理装置在检测到操作程序运行异常的情况下,信息处理装置就可以利用栈回溯接口函数直接获取到操作程序异常时的栈回溯信息,利用异常栈接口函数直接获取到操作程序异常时的异常栈信息,以利用异常栈信息和栈回溯信息来定位操作程序异常时的异常代码,提高了定位异常代码时的准确性。
实施例二
基于实施例一同一发明构思,本发明实施例提供了一种信息处理装置1,对应于一种信息处理方法;图6为本发明实施例提供的一种信息处理装置的组成结构示意图一,该信息处理装置1可以包括:
注册单元11,用于在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数,并启动所述信息处理装置中的操作程序;
启动单元12,用于启动所述信息处理装置中的操作程序;
获取单元13,用于在检测到所述操作程序运行异常的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息;并利用所述异常栈接口函数获取所述操作程序异常时的异常栈信息;
定位单元14,用于根据所述异常栈信息和所述栈回溯信息,定位所述操作程序运行异常时的异常代码。
在本发明的一些实施例中,所述获取单元13,用于获取所述操作程序对应的总堆栈信息;
相应的,所述定位单元14,用于根据所述总堆栈信息、所述异常栈信息和所述栈回溯信息,定位程序运行异常时的异常代码。
在本发明的一些实施例中,所述获取单元13,用于获取所述操作程序异常时的线程信息、内存信息和寄存器信息;
相应的,所述定位单元14,用于根据所述线程信息、所述内存信息、所述寄存器信息、所述栈回溯信息和所述异常栈信息,定位所述操作程序运行异常时的异常代码。
在本发明的一些实施例中,所述获取单元13,用于获取所述操作程序编译时的编译文件;
相应的,所述定位单元14,用于根据所述编译文件、所述线程信息、所述内存信息、所述寄存器信息、所述栈回溯信息和所述异常栈信息,定位程序运行异常时的异常代码。
在本发明的一些实施例中,所述获取单元13,用于在检测到所述操作程序处于异常或者断言失败的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息。
在本发明的一些实施例中,所述装置还包括确定单元和显示单元;
所述确定单元,还用于根据所述异常栈信息和所述栈回溯信息,确定所述操作程序异常时的异常原因;
所述显示单元,用于显示所述异常原因。
需要说明的是,在实际应用中,上述注册单元11、启动单元12、获取单元13和定位单元14可由信息处理装置1上的处理器15实现,具体为CPU(Central Processing Unit,中央处理器)、MPU(Microprocessor Unit,微处理器)、DSP(Digital Signal Processing,数字信息处理器)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现;上述数据存储可由信息处理装置1上的存储器16实现。
本发明实施例还提供了一种信息处理装置1,如图7所示,所述信息处理装置1包括:处理器15、存储器16和通信总线17,所述存储器16通过所述通信总线17与所述处理器15进行通信,所述存储器16存储所述处理器15可执行的程序,当所述程序被执行时,通过所述处理器15执行如实施例一所述的信息处理方法。
在实际应用中,上述存储器16可以是易失性存储器(volatile memory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(non-volatile memory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(flash memory),硬盘(Hard DiskDrive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器15提供指令和数据。
本发明实施例提供了一种存储介质,其上存储有程序,所述程序被处理器15执行时实现如实施例一所述的信息处理方法。
可以理解的是,信息处理装置通过在信息处理装置启动的情况下注册栈回溯接口函数和异常栈接口函数,使得信息处理装置在检测到操作程序运行异常的情况下,信息处理装置就可以利用栈回溯接口函数直接获取到操作程序异常时的栈回溯信息,利用异常栈接口函数直接获取到操作程序异常时的异常栈信息,以利用异常栈信息和栈回溯信息来定位操作程序异常时的异常代码,提高了定位异常代码时的准确性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种信息处理方法,其特征在于,包括:
在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数,并启动所述信息处理装置中的操作程序;
在检测到所述操作程序运行异常的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息;并利用所述异常栈接口函数获取所述操作程序异常时的异常栈信息;
根据所述异常栈信息和所述栈回溯信息,定位所述操作程序运行异常时的异常代码。
2.根据权利要求1所述的方法,其特征在于,所述注册栈回溯接口函数和异常栈接口函数,还包括:
获取所述操作程序对应的总堆栈信息;
相应的,所述根据所述异常栈信息和所述栈回溯信息,定位所述操作程序运行异常时的异常代码,包括:
根据所述总堆栈信息、所述异常栈信息和所述栈回溯信息,定位程序运行异常时的异常代码。
3.根据权利要求1所述的方法,其特征在于,所述利用所述异常栈接口函数获取所述操作程序异常时的异常栈信息,还包括:
获取所述操作程序异常时的线程信息、内存信息和寄存器信息;
相应的,所述根据所述异常栈信息和所述栈回溯信息,定位所述操作程序运行异常时的异常代码,包括:
根据所述线程信息、所述内存信息、所述寄存器信息、所述栈回溯信息和所述异常栈信息,定位所述操作程序运行异常时的异常代码。
4.根据权利要求3所述的方法,其特征在于,所述根据所述线程信息、所述内存信息、所述寄存器信息、所述栈回溯信息和所述异常栈信息,定位所述操作程序运行异常时的异常代码之前,所述方法还包括:
获取所述操作程序编译时的编译文件;
相应的,所述根据所述线程信息、所述内存信息、所述寄存器信息、所述栈回溯信息和所述异常栈信息,定位所述操作程序运行异常时的异常代码,包括:
根据所述编译文件、所述线程信息、所述内存信息、所述寄存器信息、所述栈回溯信息和所述异常栈信息,定位程序运行异常时的异常代码。
5.根据权利要求1所述的方法,其特征在于,所述在检测到所述操作程序运行异常的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息,包括:
在检测到所述操作程序处于异常或者断言失败的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息。
6.根据权利要求1所述的方法,其特征在于,所述利用所述异常栈接口函数获取所述操作程序异常时的异常栈信息之后,所述方法还包括:
根据所述异常栈信息和所述栈回溯信息,确定所述操作程序异常时的异常原因;
显示所述异常原因。
7.一种信息处理装置,其特征在于,所述装置包括:
注册单元,用于在信息处理装置启动的情况下,注册栈回溯接口函数和异常栈接口函数;
启动单元,用于启动所述信息处理装置中的操作程序;
获取单元,用于在检测到所述操作程序运行异常的情况下,利用所述栈回溯接口函数获取所述操作程序异常时的栈回溯信息;并利用所述异常栈接口函数获取所述操作程序异常时的异常栈信息;
定位单元,用于根据所述异常栈信息和所述栈回溯信息,定位所述操作程序运行异常时的异常代码。
8.根据权利要求7所述的装置,其特征在于,
所述获取单元,用于获取所述操作程序对应的总堆栈信息;
相应的,所述定位单元,用于根据所述总堆栈信息、所述异常栈信息和所述栈回溯信息,定位程序运行异常时的异常代码。
9.一种信息处理装置,其特征在于,所述装置包括:
存储器、处理器和通信总线,所述存储器通过所述通信总线与所述处理器进行通信,所述存储器存储所述处理器可执行的信息处理的程序,当所述信息处理的程序被执行时,通过所述处理器执行如权利要求1至6任一项所述的方法。
10.一种存储介质,其特征在于,其上存储有计算机程序,应用于信息处理装置,该计算机程序被处理器执行时实现如权利要求1至6任一项所述的方法。
CN202110641984.1A 2021-06-09 2021-06-09 一种信息处理方法及装置、存储介质 Pending CN115454686A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110641984.1A CN115454686A (zh) 2021-06-09 2021-06-09 一种信息处理方法及装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110641984.1A CN115454686A (zh) 2021-06-09 2021-06-09 一种信息处理方法及装置、存储介质

Publications (1)

Publication Number Publication Date
CN115454686A true CN115454686A (zh) 2022-12-09

Family

ID=84295274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110641984.1A Pending CN115454686A (zh) 2021-06-09 2021-06-09 一种信息处理方法及装置、存储介质

Country Status (1)

Country Link
CN (1) CN115454686A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116521419A (zh) * 2023-05-16 2023-08-01 山东铂金动力科技有限公司 一种嵌入式操作系统的控制方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116521419A (zh) * 2023-05-16 2023-08-01 山东铂金动力科技有限公司 一种嵌入式操作系统的控制方法

Similar Documents

Publication Publication Date Title
US9244815B2 (en) Integrated debugger and code coverage tool
US8136097B2 (en) Thread debugging device, thread debugging method and information storage medium
US8201152B2 (en) Method and system for debugging a program in a multi-thread environment
US7945900B2 (en) Debugging tool for debugging multi-threaded programs
JP4222370B2 (ja) デバッグ支援装置及びデバッグ処理方法をコンピュータに実行させるためのプログラム
US8566799B2 (en) Resuming a prior debug session
US8255203B2 (en) Method of debugging an executable computer program having instructions for different computer architectures
US20060059486A1 (en) Call stack capture in an interrupt driven architecture
US8291386B2 (en) System and process for debugging object-oriented programming code
CN109101416B (zh) 一种内核故障注入方法及电子设备
US20120278791A1 (en) Utilizing temporal assertions in a debugger
US9361205B2 (en) Code coverage framework
US8701093B2 (en) Event management in a non-stop debugging environment
US8108840B2 (en) Method for enhancing debugger performance of hardware assisted breakpoints
CN115454686A (zh) 一种信息处理方法及装置、存储介质
US10229033B2 (en) System, method and apparatus for debugging of reactive applications
US20110258613A1 (en) Software debugger activation based on key performance indicators
US8726244B2 (en) Software breakpoint handling by eliminating instruction replacement and execution under certain conditions
Jämbäck Evaluation of Real-Time Linux on RISC-V processor architecture
JP2017199180A (ja) 画像処理装置
CN117251179A (zh) Ecu程序在线刷写方法、装置、电子设备及存储介质
WO2013178115A1 (zh) 一种对数据进行处理的方法和设备
JP2005301616A (ja) デバッグシステム

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