异常定位方法、装置及可读存储介质与流程

文档序号:30599722发布日期:2022-07-01 21:25阅读:94来源:国知局
异常定位方法、装置及可读存储介质与流程

1.本发明涉及计算机技术领域,特别是涉及一种异常定位方法、装置及可读存储介质。


背景技术:

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


技术实现要素:

4.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种异常定位方法、装置及可读存储介质。
5.本发明的第一方面,提供了一种异常定位方法,该方法包括:
6.在确定中断源发出中断请求的情况下,响应于所述中断请求,调用中断处理函数,以通过所述中断处理函数获取调试信息,其中,所述调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,所述目标函数栈包括被所述中断请求打断的所述目标程序中当前函数的函数栈、以及所述当前函数之前的p个函数的函数栈,其中,所述p为大于等于1的正整数,所述p个函数为所述目标程序中的函数;
7.将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示。
8.本发明的第二方面,提供了一种异常定位装置,该装置包括:
9.调用模块,用于在确定中断源发出中断请求的情况下,响应于所述中断请求,调用中断处理函数,以通过所述中断处理函数获取调试信息;其中,所述调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,所述目标函数栈包括被所述中断请求打断的所述目标程序中当前函数的函数栈、以及所述当前函数之前的p个函数的函数栈,其中,所述p为大于等于0的整数,所述p个函数为所述目标程序中的函数;
10.输出模块,用于将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示。
11.本发明的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上任一所述的异常定位方法的步骤。
12.本发明的第四方面,提供了一种异常定位装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述任一项所述的异常定位方法的步骤。
13.本发明实施例包括以下优点:
14.本发明实施例异常定位方法、装置及可读存储介质,在确定中断源发出中断请求的情况下,响应于中断请求,调用中断处理函数,以通过中断处理函数获取调试信息,调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示。而现有技术中若系统或程序异常导致人机交互无法使用时,无法获得调试信息,从而无法判断系统或程序异常原因。而本实施例中,在程序出现异常时,可以通过中断源发出中断请求,中央处理器响应于中断请求,获取包括目标寄存器的值和目标程序的目标函数栈的栈信息的调试信息,并将中断处理函数获取到的目标寄存器的值和栈信息输出到目标设备,从而使技术人员可以根据调试信息,分析系统或程序异常的原因。
15.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
16.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
17.图1为本发明实施例提供的一种异常定位方法的步骤流程图;
18.图2是本发明实施例提供的一种异常定位系统的结构示意图;
19.图3是本技术实施例提供的一种函数栈示意图;
20.图4为本发明实施例提供的一种程序的栈空间的示意图;
21.图5为本发明实施例提供的一种异常定位装置的结构示意图;
22.图6为本发明实施例所提供的另一种异常定位装置的结构示意图。
具体实施方式
23.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
24.应当理解,此处所描述的具体实施例仅用以解释本发明,仅仅是本发明一部分实施例,而不是全部的实施例,并不用于限定本发明。
25.参照图1,图1为本发明实施例提供的一种异常定位方法的步骤流程图,该异常定位方法可以包括以下步骤:
26.步骤101、在确定中断源发出中断请求的情况下,响应于中断请求,调用中断处理函数,以通过中断处理函数获取调试信息。
27.其中,调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,目标函数栈包括被中断请求打断的目标程序中当前函数的函数栈、以及当前函数之前的p个函数的函数栈,p为大于等于0的整数,所述p个函数为所述目标程序中的函数。p个函数为在中断源发出中断请求前,目标程序中已经开始执行的函数。
28.需要说明的是,目标程序的运行环境包括通用寄存器的值,通用寄存器例如包括程序计数器(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个步骤。
29.可选的,在调用中断处理函数之前,还可以包括如下步骤:
30.将中断处理函数注册至目标程序的运行环境中。
31.可以在目标程序启动过程中,将中断处理函数注册至目标程序的运行环境中。或者在目标程序启动完毕后,将中断处理函数注册至目标程序的运行环境中。
32.可选的,在响应于中断请求,调用中断处理函数,以通过中断处理函数获取目标寄存器的值和目标程序的目标函数栈的栈信息之前,还可以包括如下步骤:
33.检测中央处理器的通用输入输出gpio引脚上的电平信号;
34.在gpio引脚上的电平信号发生变化的情况下,确定gpio引脚发出中断请求,其中,中断源为gpio引脚。
35.本发明实施例可以以通用输入输出(gpio,general-purpose input/output)引脚为中断源,具体实现可以参照图2所示,图2是本发明实施例提供的一种异常定位系统的结构示意图,该系统包括控制单元、中断响应单元、信息输出单元和显示设备。控制单元能够引起gpio引脚的电平发生变化,gpio引脚的电平变化可以被中央处理器(cpu,central processing unit)检测,cpu检测到gpio引脚的电平变化的情况下,通过中断响应单元响应中断,并获取目标寄存器的值和目标程序的目标函数栈的栈信息,然后通过信息输出单元将目标寄存器的值和目标程序的目标函数栈的栈信息,输出至目标设备显示。
36.需要说明的是,本发明实施例在系统或程序异常时,再外接目标设备,并通过中断源发出中断请求,进而获取调试信息,并从目标设备上输出调试信息,也即在无系统或程序异常时,无需外接目标设备,从而可以减少一定的人力和物力,并且,中断源为gpio引脚的情况下,中断属于硬件中断,相较于软件中断,硬件中断可实现对目标程序的异常原因进行快速定位,提高了分析目标程序的异常原因的效率。
37.中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
38.cpu确定中断源发出中断请求的情况下,cpu响应于中断请求,调用中断处理函数,以通过中断处理函数获取目标寄存器的值和目标程序的目标函数栈的栈信息。目标程序的目标函数栈的栈信息可以通过如下步骤获得的:
39.获取当前函数的函数栈的栈信息;
40.在p大于1的情况下,基于当前函数的函数栈的栈信息,获取p个函数的函数栈的栈
信息;
41.其中,p个函数中的第m个函数的函数栈的栈信息为基于第m个函数的下一个函数的函数栈的栈信息确定的,第m个函数为下一个函数的调用函数,m为正整数,m为大于等于1且小于等于p的区间范围内的任意整数。
42.本发明实施例中,目标程序指出现异常的程序,目标程序可以为一个或多个,中央处理器为单核中央处理器时,目标程序为一个;中央处理器为多核中央处理器时,目标程序可以为多个,目标程序为多个的情况下,可以给每个核发出一个中断请求。中央处理器响应于中断请求,调用中断处理函数,通过中断处理函数获取目标程序的目标函数栈的栈信息。为了便于理解本发明实施例,在此介绍函数栈相关内容:
43.在计算机领域,栈(stack)是允许在同一端进行插入和删除操作的动态存储空间。它按照先进后出的原则存储数据,先进入的数据被压在栈底,最后的数据在栈顶。函数栈就是在程序运行时动态分配,用来保存一个函数调用时需要维护的信息,这些信息指栈信息,栈信息包括函数的返回地址参数、临时变量、栈位置。参照图3,图3是本技术实施例提供的一种函数栈示意图,一个典型的函数栈如下图3所示:
44.某些架构中,函数栈是向下增长的,也就是栈底在高地址(high address),栈顶在低地址(low address)。在图3中,gpr[sp]代表通用寄存器sp($29)指向栈顶,又称sp为栈指针(stack pointer)。每次函数调用的时候sp都会向下移动n字节,sp预先指定了一块存储区域。这n个字节就是此函数的栈空间。这里要求n必须是16的倍数。典型的分配函数栈指令:
[0045]
daddiu sp,sp,-48
[0046]
指令daddiu是带常数的加法指令,上面指令相当于c语言表达式sp=sp-48。相当于把sp指针向下移动48字节,也就是申请一个48字节的栈。当函数返回时就通过sp指针向上移动48字节恢复栈,指令如下:
[0047]
daddiu sp,sp,48
[0048]
通常通过sp栈指针分配空间后,就可以根据需要操作函数信息的保存和恢复。一般都会先把通用寄存器ra的值和fp的值入栈,如果有gp的操作,那么也会把gp的值入栈。当此函数要调用其他函数时,那么此函数内部的局部变量、寄存器变量、参数等也要做入栈保存。其中,fp指向函数的函数栈的栈底,fp被称作帧指针(frame pointer),由于sp指向函数的函数栈的栈顶,因此,根据sp的值和fp的值,可以限定该函数的函数栈的边界。
[0049]
在当今流行的计算机体系架构中,大部分计算机的参数传递、局部变量的分配和释放都是通过操纵程序栈来实现的。栈用来传递函数参数、存储返回值信息、保存寄存器以供恢复调用前处理机状态。系统会在程序启动时指定一个固定大小的栈空间,用于该程序的函数参数和局部变量的存储。sp的初始值就指向了这个固定大小栈的栈底。该程序中的每一次函数调用,都会通过sp指针的移动为函数在该栈空间划分出一块空间用作函数栈。例如如图4所示,图4为本发明实施例提供的一种程序的栈空间的示意图,图4中的较粗的粗线将该栈空间分为上下两部分,上部分为函数1的函数栈,下部分为函数2的函数栈。函数1调用函数2时,通过sp指针的移动为函数2在该栈空间划分出一块空间用作函数2的函数栈,sp指向函数栈2的栈顶,如图4中的位于条形格外面的gpr[sp]指向函数栈2的栈顶。
[0050]
每个程序都有自身的栈,所有函数都在这同一个栈上分配空间来存储和本函数相
关的信息。每个函数所使用的那部分空间就叫栈帧(stack frame)。
[0051]
sp和fp就限定了每个函数栈的边界,所有的函数栈都是在当前程序的栈空间中按照向下增长的方式分配出来的一段空间。有了fp和sp就界定了每个函数栈的边界。每个函数栈内部的fp都指向了调用者函数的函数栈的栈底,如图4所示,函数栈2内部的fp指向函数1的函数栈1的栈底,函数栈2内部的fp的值即为函数栈1的fp的值。当程序异常后,可以通过gpio引脚触发中断,并回溯函数调用关系,以分析程序异常的原因,具体可以通过如下两种方法回溯函数调用关系:
[0052]
方法一:通过当前函数的函数栈中存储的sp的值和fp的值,就可以得到p个函数的函数栈的sp的值和fp的值,当前函数指被中断请求打断的异常程序的函数,所述p个函数中第m个函数的函数栈的栈信息为基于所述第m个函数的下一个函数的函数栈的栈信息确定,第m个函数为第m个函数的下一个函数的调用函数,第m个函数的下一个函数的函数栈中存储的sp的值为第m个函数的函数栈的sp的值,第m个函数的下一个函数的函数栈中存储的fp的值为第m个函数的函数栈的fp的值。例如在程序执行到第10个函数时,gpio引脚触发中断,则第10个函数为当前函数,第9个函数为第10个函数的调用函数,基于第10个函数的函数栈的栈信息,可以得到第9个函数的函数栈的栈信息,基于第9个函数的函数栈的栈信息,可以得到第8个函数的函数栈的栈信息,以此类推,直至得到第1个函数的函数栈的栈信息。其中,函数栈的栈信息包括函数栈的sp的值和fp的值。
[0053]
方法二:需要说明的是,图4中的函数栈2的栈空间中未示出函数栈1的gpr[sp],但是可以基于函数2的函数栈2的fp的值,得到函数1的函数栈1的sp的值。即条形格外面的gpr[fp]的值等于函数栈1的sp的值,即第m个函数的下一个函数的函数栈的栈底等于第m个函数的函数栈的栈顶,获取了第m个函数的下一个函数的函数栈的栈底的值,即可以确定第m个函数的函数栈的栈顶的值。同时由于函数栈2中存储的gpr[fp]的值等于函数栈1的fp的值,因此,基于函数栈2的栈信息,即可以得到函数栈1的栈信息。例如在程序执行到第10个函数时,gpio引脚触发中断,则第10个函数为当前函数,第9个函数为第10个函数的调用函数,基于第10个函数的函数栈的fp的值,可以确定第9个函数的函数栈的sp的值,第10个函数的函数栈中存储的gpr[fp]的值等于第9个函数的函数栈的fp的值,即基于第10个函数的函数栈的栈信息,可以确定第9个函数的函数栈的栈信息。同样,可以基于第9个函数的函数栈的栈信息,确定第8个函数的函数栈的栈信息,以此类推,直至得到第一个函数的函数栈的栈信息。
[0054]
需要说明的是,由于目标程序的每个函数分别对应一个函数栈,并建立有函数与函数栈的对应关系,中央处理器收到中断请求时的sp的值和fp的值后,基于sp的值和fp的值,可以确定当前函数栈,确定出当前函数栈后,即可以确定当前函数栈对应的当前函数是哪个函数,基于当前函数的当前函数栈的栈信息,即可以确定当前函数栈的上一个函数栈的栈信息,基于上一个函数栈的栈信息可以确定上一个函数栈,进而确定上一个函数栈对应的函数是哪个,上一个函数栈为当前函数的调用函数的函数栈,也即确定出当前函数的调用函数为哪个,以此类推,直至确定第一个函数的函数栈以及第一个函数,实现确定出当前函数之前的p个函数和p个函数的函数栈。
[0055]
步骤102、将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示。
[0056]
目标设备会有自身的显示方式,目标设备可以为显示器或与cpu有通信连接关系
的其他主机,例如目标设备为显示器时,可以采用显示输出方式;目标设备为其他主机时,可以采用串口输出方式显示,本发明实施例对该两种方式进行介绍。
[0057]
针对显示输出方式:在将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示之前,还可以包括如下步骤:
[0058]
将目标寄存器的值和目标函数栈的栈信息,按照显示要求的格式写入显存;
[0059]
从显存获取目标寄存器的值和目标函数栈的栈信息;
[0060]
相应的,步骤102将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示,具体可以通过如下步骤实现:
[0061]
将获取的目标寄存器的值和目标函数栈的栈信息输出到显示器上显示,目标设备为显示器。
[0062]
显示输出,需要显卡来驱动输出,对于现代的大部分显示技术,无论使用集成显卡还是独立显卡,都是以显存的方式,来和系统交互。
[0063]
显存,也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。我们在显示屏上看到的画面是由一个个的像素点构成的,而每个像素点都以4至32甚至64位的数据来控制它的亮度和色彩,这些数据必须通过显存来保存,再交由显示芯片和cpu调配,最后把运算结果转化为图形输出到显示器上。
[0064]
因此,要想显示输出中断处理函数获得的调试信息,该调试信息包括目标寄存器的值和目标函数栈的栈信息,只需要将调试信息按照显示要求的格式写入显存,显卡会自动将调试信息输出到显示器上,而显存对系统来说,可以作为一段普通内存来用,因此,只要数据满足显示要求,可以直接写入显存输出。
[0065]
针对串口输出方式:在步骤102将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示之前,还可以包括如下步骤:
[0066]
将目标寄存器的值和目标函数栈的栈信息进行数据转换,得到数据转换后的目标寄存器的值和目标函数栈的栈信息;
[0067]
相应的,步骤102将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示,可以通过如下步骤实现:
[0068]
将数据转换后的目标寄存器的值和目标函数栈的栈信息,输出到目标设备上显示。
[0069]
rs-232也称标准串口,最常用的一种串行通讯接口。传统的rs-232-c接口标准有22根线,采用标准25芯d型插头座(db25),后来使用简化为9芯d型插座(db9),现在应用中25芯插头座已很少采用。rs-232采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2v至3v左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。rs-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kω。所以rs-232适合本地设备之间的通信。
[0070]
本发明的串口输出,不需要使用全功能串口,只需要tx、rx、gnu(地)三线链接即可。
[0071]
串口通信的基本流程是:波特率的配置、数据转换、数据输出。其中,波特率代表了数据输出的速率,对端设备要以同样的速率设置,才能正确识别数据。
[0072]
数据转换是为了调试信息可以转换成易被人识别的格式来输出,调试信息是纯数字信息,而易被人阅读和理解的是字符信息(ascii码),因此我们将调试信息进行数据转换,数据转换后的调试信息是字符的形式,从而实现将调试信息以字符的形式输出,便于技术人员分析调试信息,快速定位程序异常原因。
[0073]
串口输出一般都有串口寄存器来将写入数据转换成符合rs-232要求的电平信号,达到数据输出的目的,这里将转换后的调试信息写入目标设备的串口输出寄存器即可。
[0074]
需要说明的是,目标寄存器的值可以反应cpu当前执行环境的状态。技术人员获得目标寄存器的值和目标程序的目标函数栈的栈信息后,就可以对目标寄存器的值和目标程序的目标函数栈的栈信息进行分析,从而定位目标程序的异常位置、引起目标程序异常的原因、目标程序执行时变量的值等信息,从而达到对设备和系统调试的目的。并且,由于本发明实施例是在程序出现异常后,才需要接入目标设备,并将中断处理函数获取到的目标寄存器的值和栈信息输出到目标设备上显示,从而实现占用较少的目标设备。而现有技术中在大规模系统或程序测试时,通过调试信息辅助判断系统或程序的异常位置,就需要检测所有设备上的系统或程序是否存在异常,就需要在这些设备上接入大量的外接设备,若有异常,则外接设备需记录异常信息,因此,需要大量的人力和物力来完成这项任务,造成人力和物力的浪费。
[0075]
本发明实施例提供的异常定位方法,通过在确定中断源发出中断请求的情况下,响应于中断请求,调用中断处理函数,以通过中断处理函数获取调试信息,调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示。而现有技术中若系统或程序异常导致人机交互无法使用时,无法获得调试信息,从而无法判断系统或程序异常原因。而本发明实施例中,在程序出现异常时,可以通过中断源发出中断请求,中央处理器响应于中断请求,获取包括目标寄存器的值和目标程序的目标函数栈的栈信息的调试信息,并将中断处理函数获取到的目标寄存器的值和栈信息输出到目标设备,从而使技术人员可以根据调试信息,分析系统或程序异常的原因。
[0076]
参照图5,图5为本发明实施例提供的一种异常定位装置的结构示意图,本实施例提供的异常定位装置可以部署于计算机系统中,该异常定位装置包括:
[0077]
调用模块510,用于在确定中断源发出中断请求的情况下,响应于所述中断请求,调用中断处理函数,以通过所述中断处理函数获取调试信息;其中,所述调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,所述目标函数栈包括被所述中断请求打断的所述目标程序中当前函数的函数栈、以及所述当前函数之前的p个函数的函数栈,其中,所述p为大于等于0的整数,所述p个函数为所述目标程序中的函数;
[0078]
输出模块520,用于将所述目标寄存器的值和所述目标函数栈的栈信息输出到目标设备上显示。
[0079]
本发明实施例提供的异常定位装置,通过在确定中断源发出中断请求的情况下,响应于中断请求,调用中断处理函数,以通过中断处理函数获取调试信息,调试信息包括目标寄存器的值和目标程序的目标函数栈的栈信息,将目标寄存器的值和目标函数栈的栈信息输出到目标设备上显示。而现有技术中若系统或程序异常导致人机交互无法使用时,无法获得调试信息,从而无法判断系统或程序异常原因。而本发明实施例中,在程序出现异常
时,可以通过中断源发出中断请求,中央处理器响应于中断请求,获取包括目标寄存器的值和目标程序的目标函数栈的栈信息的调试信息,并将中断处理函数获取到的目标寄存器的值和栈信息输出到目标设备,从而使技术人员可以根据调试信息,分析系统或程序异常的原因。可选的,还包括:
[0080]
检测模块,用于检测中央处理器的通用输入输出gpio引脚上的电平信号;
[0081]
确定模块,用于在所述gpio引脚上的电平信号发生变化的情况下,确定所述gpio引脚发出所述中断请求,其中,所述中断源为所述gpio引脚。
[0082]
可选的,所述装置还包括:
[0083]
第一获取模块,用于获取所述当前函数的函数栈的栈信息;在p大于1的情况下,基于所述当前函数的函数栈的栈信息,获取所述p个函数的函数栈的栈信息;
[0084]
其中,所述p个函数中第m个函数的函数栈的栈信息为基于所述第m个函数的下一个函数的函数栈的栈信息确定,所述第m个函数为所述下一个函数的调用函数,m为正整数,m为大于等于1且小于等于p的区间范围内的任意整数。
[0085]
可选的,还包括:
[0086]
写入模块,用于将所述目标寄存器的值和所述目标函数栈的栈信息,按照显示要求的格式写入显存;
[0087]
第二获取模块,用于从所述显存获取所述目标寄存器的值和所述目标函数栈的栈信息;
[0088]
所述输出模块,具体用于将获取的所述目标寄存器的值和所述目标函数栈的栈信息输出到显示器上显示,所述目标设备为所述显示器。
[0089]
可选的,还包括:
[0090]
数据转换模块,用于将所述目标寄存器的值和所述目标函数栈的栈信息进行数据转换,得到数据转换后的目标寄存器的值和目标函数栈的栈信息;
[0091]
所述输出模块,具体用于将所述数据转换后的目标寄存器的值和目标函数栈的栈信息,输出到目标设备上显示。
[0092]
可选的,还包括:
[0093]
注册模块,用于将所述中断处理函数注册至所述目标程序的运行环境中。
[0094]
另外,本发明实施例还提供一种异常定位装置,如图6所示,图6为本发明实施例所提供的另一种异常定位装置的结构示意图。该异常定位装置600包括处理器610,存储器620以及存储在存储器620上并可在处理器610上运行的计算机程序,该计算机程序被处理器610执行时实现上述实施例的异常定位方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0095]
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的异常定位方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,的计算机可读存储介质,可以为只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
[0096]
本发明实施例还提供了一种计算机程序,该计算机程序可以存储在云端或本地的存储介质上。在该计算机程序被计算机或处理器运行时用于执行本发明实施例的异常定位
方法的相应步骤,并且用于实现根据本发明实施例的异常定位装置中的相应模块。
[0097]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0098]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0099]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。
[0100]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1