异常定位方法、装置及可读存储介质制造方法及图纸

技术编号:33999201 阅读:53 留言:0更新日期:2022-07-02 11:41
本发明专利技术实施例提供了一种异常定位方法、装置及可读存储介质。本发明专利技术实施例异常定位方法:在确定中断源发出中断请求的情况下,响应于中断请求,调用中断处理函数,以通过中断处理函数获取调试信息,调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示。由于本发明专利技术实施例在程序出现异常时,能够将中断处理函数获取到的目标寄存器的值和栈信息输出到目标设备,从而使技术人员可以根据调试信息,分析系统或程序异常的原因。分析系统或程序异常的原因。分析系统或程序异常的原因。

【技术实现步骤摘要】
异常定位方法、装置及可读存储介质


[0001]本专利技术涉及计算机
,特别是涉及一种异常定位方法、装置及可读存储介质。

技术介绍

[0002]在对大规模系统或程序进行测试时,系统或程序可能会出现各种意想不到的异常,那么就需要有方式,来诊断系统或程序当前的状态,来确定引起异常的原因。
[0003]现有技术中通过在设计系统或程序时,加入调试信息,以在系统或程序运行时,如果出现异常,通过调试信息能够辅助判断系统或程序的异常位置。然而,若系统或程序异常导致人机交互无法使用时,无法获得调试信息,从而无法判断系统或程序异常原因。

技术实现思路

[0004]鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种异常定位方法、装置及可读存储介质。
[0005]本专利技术的第一方面,提供了一种异常定位方法,该方法包括:
[0006]在确定中断源发出中断请求的情况下,响应于所述中断请求,调用中断处理函数,以通过所述中断处理函数获取调试信息,其中,所述调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,所述目标函数栈包括被所述中断请求打断的所述目标程序中当前函数的函数栈、以及所述当前函数之前的P个函数的函数栈,其中,所述P为大于等于1的正整数,所述P个函数为所述目标程序中的函数;
[0007]将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示。
[0008]本专利技术的第二方面,提供了一种异常定位装置,该装置包括:/>[0009]调用模块,用于在确定中断源发出中断请求的情况下,响应于所述中断请求,调用中断处理函数,以通过所述中断处理函数获取调试信息;其中,所述调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,所述目标函数栈包括被所述中断请求打断的所述目标程序中当前函数的函数栈、以及所述当前函数之前的P个函数的函数栈,其中,所述P为大于等于0的整数,所述P个函数为所述目标程序中的函数;
[0010]输出模块,用于将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示。
[0011]本专利技术的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上任一所述的异常定位方法的步骤。
[0012]本专利技术的第四方面,提供了一种异常定位装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述任一项所述的异常定位方法的步骤。
[0013]本专利技术实施例包括以下优点:
[0014]本专利技术实施例异常定位方法、装置及可读存储介质,在确定中断源发出中断请求的情况下,响应于中断请求,调用中断处理函数,以通过中断处理函数获取调试信息,调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示。而现有技术中若系统或程序异常导致人机交互无法使用时,无法获得调试信息,从而无法判断系统或程序异常原因。而本实施例中,在程序出现异常时,可以通过中断源发出中断请求,中央处理器响应于中断请求,获取包括目标寄存器的值和目标程序的目标函数栈的栈信息的调试信息,并将中断处理函数获取到的目标寄存器的值和栈信息输出到目标设备,从而使技术人员可以根据调试信息,分析系统或程序异常的原因。
[0015]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0016]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0017]图1为本专利技术实施例提供的一种异常定位方法的步骤流程图;
[0018]图2是本专利技术实施例提供的一种异常定位系统的结构示意图;
[0019]图3是本申请实施例提供的一种函数栈示意图;
[0020]图4为本专利技术实施例提供的一种程序的栈空间的示意图;
[0021]图5为本专利技术实施例提供的一种异常定位装置的结构示意图;
[0022]图6为本专利技术实施例所提供的另一种异常定位装置的结构示意图。
具体实施方式
[0023]为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。
[0024]应当理解,此处所描述的具体实施例仅用以解释本专利技术,仅仅是本专利技术一部分实施例,而不是全部的实施例,并不用于限定本专利技术。
[0025]参照图1,图1为本专利技术实施例提供的一种异常定位方法的步骤流程图,该异常定位方法可以包括以下步骤:
[0026]步骤101、在确定中断源发出中断请求的情况下,响应于中断请求,调用中断处理函数,以通过中断处理函数获取调试信息。
[0027]其中,调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,目标函数栈包括被中断请求打断的目标程序中当前函数的函数栈、以及当前函数之前的P个函数的函数栈,P为大于等于0的整数,所述P个函数为所述目标程序中的函数。P个函数为在中断源发出中断请求前,目标程序中已经开始执行的函数。
[0028]需要说明的是,目标程序的运行环境包括通用寄存器的值,通用寄存器例如包括程序计数器(pc,program counter)、栈指针(sp,stack pointer)寄存器、和返回地址(ra,
return address)寄存器。例如目标运行环境包括pc的值、sp寄存器的值和ra寄存器,在调用中断处理函数前,可以先存储pc的值、sp寄存器的值和ra寄存器的值,从而实现在不破坏目标程序的运行环境的情况下,调用中断处理函数。其中,pc里保存有当前正在执行的指令的地址,在本实施例中,执行到当前函数的某个指令时,中央处理器收到中断请求,则pc的值保存的是当前函数的该指令的地址。sp寄存器用来存放当前函数的函数栈的栈顶的值,即sp寄存器的值等于当前函数的函数栈的栈顶。ra寄存器的值用来保存当前函数的调用函数的子程序的地址,其中,子程序是指该调用函数中的某个步骤,通过ra寄存器的值可以确定该调用函数的子程序的地址。例如,若目前正在执行该调用函数的第2个步骤(子程序),在执行第2个步骤时调用了当前函数,则可以将该调用函数的第3个步骤的地址存放在ra寄存器,等当前函数调用完毕后,可以根据该ra寄存器的值,定位到该调用函数的第3个步骤,接着执行该调用函数的第3个步骤。
[0029]可选的,在调用中断处理函数之前,还可以包括如下步骤:
[0030]将中断处理函数注册至目标程序的运行环境中。
[0031]可以在目标程序启动过程中,将中断处理函数注册至目标程本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种异常定位方法,其特征在于,所述方法包括:在确定中断源发出中断请求的情况下,响应于所述中断请求,调用中断处理函数,以通过所述中断处理函数获取调试信息;其中,所述调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,所述目标函数栈包括被所述中断请求打断的所述目标程序中当前函数的函数栈、以及所述当前函数之前的P个函数的函数栈,其中,所述P为大于等于0的整数,所述P个函数为所述目标程序中的函数;将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示。2.根据权利要求1所述的方法,其特征在于,在所述响应于所述中断请求,调用中断处理函数,以通过所述中断处理函数获取调试信息之前,还包括:检测中央处理器的通用输入输出GPIO引脚上的电平信号;在所述GPIO引脚上的电平信号发生变化的情况下,确定所述GPIO引脚发出所述中断请求,其中,所述中断源为所述GPIO引脚。3.根据权利要求1所述的方法,其特征在于,所述目标程序的目标函数栈的栈信息为通过如下步骤获得的:获取所述当前函数的函数栈的栈信息;在P大于1的情况下,基于所述当前函数的函数栈的栈信息,获取所述P个函数的函数栈的栈信息;其中,所述P个函数中第M个函数的函数栈的栈信息为基于所述第M个函数的下一个函数的函数栈的栈信息确定,所述第M个函数为所述下一个函数的调用函数,M为正整数,M为大于等于1且小于等于P的区间范围内的任意整数。4.根据权利要求1至3任一项所述的方法,其特征在于,在所述将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示之前,还包括:将所述目标寄存器的值和所述目标函数栈的栈信息,按照显示要求的格式写入显存;从所述显存获取所述目标寄存器的值和所述目标函数栈的栈信息;所述将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示,包括:将获取的所述目标寄存器的值和所述目标函数栈的栈信息输出到显示器上显示,所述目标设备为所述显示器。5.根据权利要求1至3任一项所述的方法,其特征在于,在所述将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示之前,还包括:将所述目标寄存器的值和所述目标函数栈的栈信息进行数据转换,得到数据转换后的目标寄存器的值和目标函数栈的栈信息;所述将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示,包括:将所述数据转换后的目标寄存器的值和目标函数栈的栈信息,输出到目标设备上显示。6.根据权利要求4或5所述的方法,其特征在于,在所述响应于所述中断请求,调用中断处理函数之前,还包括:将所述中断处理函数注册至所述目标程序的运行环境中。
7.一种异常定位装置,其特征在...

【专利技术属性】
技术研发人员:牛鹏举
申请(专利权)人:龙芯中科成都技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1