死循环的定位方法、装置、计算机设备和存储介质与流程

文档序号:17695753发布日期:2019-05-17 21:30阅读:546来源:国知局
死循环的定位方法、装置、计算机设备和存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种死循环的定位方法、装置、计算机设备和存储介质。



背景技术:

当计算机中的处理器正在处理内部数据时,外界出现了紧急事件,计算机会要求处理器暂停当前的工作去处理紧急事件,处理完毕后,处理器可以再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。计算机在使用中断服务程序进行中断时,可以使用外部中断服务程序进行常规中断事务处理,外部中断服务程序可以同时支持多种中断源,且外部中断服务程序的运行优先级高于非中断程序,当外部中断服务程序被触发时即开始运行相应的服务程序。外部中断服务程序进行中断时,有可能会陷入死循环,导致中断过程异常,将完全或几乎完全地占用cpu的运行时间,往往需要定位到死循环发生的位置,才能使中断过程恢复正常。在传统的方法中,可以通过硬件调试工具对死循环进行定位,例如,可以采用jtag硬件调试工具对死循环进行定位,这种死循环的定位方式需要cpu要具备jtag接口。还可以在中断服务程序的中断断点位插入调试信息输出语句来实现对死循环的定位。

然而,目前对死循环的定位方法非常繁琐,导致死循环的定位效率较低。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种死循环的定位方法、装置、计算机设备和存储介质,可以提高死循环的定位效率。

一种死循环的定位方法,所述方法包括:

当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断所述外部中断服务程序;

获取通过触发快速中断服务程序中断所述外部中断服务程序时所产生的中断结果;

获取触发所述快速中断服务程序中断所述外部中断服务程序的触发次数;

当所述触发次数小于预设触发次数时,执行所述触发快速中断服务程序中断所述外部中断服务程序的步骤;获取每次产生的中断结果,并根据获取的中断结果生成中断信息;

根据所述中断信息生成反汇编代码;

获取与所述中断信息对应的的断点地址,根据所述断点地址以及所述反汇编代码定位所述外部中断服务程序的死循环位置。

在其中一个实施例中,所述方法还包括:

遍历中断源;

从所述中断源中确定符合预设条件的目标中断源;

所述当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断所述外部中断服务程序,包括:

当检测到外部中断服务程序出现死循环时,通过所述目标中断源触发快速中断服务程序中断所述外部中断服务程序。

在其中一个实施例中,所述方法还包括:

获取与所述目标中断源对应的中断源程序,并将所述中断源程序写入所述快速中断服务程序;

提取所述中断源程序中的中断处理子程序;

所述通过所述目标中断源触发快速中断服务程序中断所述外部中断服务程序,包括:

通过所述目标中断源触发所述中断处理子程序中断所述外部中断服务程序。

在其中一个实施例中,所述方法还包括:

获取中断参数,所述中断参数包括中断模式、触发模式、中断触发周期中的至少一种;

根据所述中断参数对所述目标中断源进行初始化处理,得到处理后的目标中断源;所述处理后的目标中断源用于触发所述快速中断服务程序。

在其中一个实施例中,所述方法还包括:

从预先设置的输出通道中确定目标输出通道;

根据所述断点地址以及所述反汇编代码生成所述外部中断服务程序的死循环的定位信息;

通过所述目标输出通道以轮询方式输出所述定位信息。

在其中一个实施例中,所述根据所述中断信息生成反汇编代码,包括:

提取所述中断信息中的中断名称,所述中断名称为所述外部中断服务程序出现死循环时的子程序名称;

根据所述中断名称查找所述外部中断服务程序出现死循环时的子程序;

根据所述子程序生成反汇编代码。

在其中一个实施例中,所述根据所述断点地址以及所述反汇编代码定位所述外部中断服务程序的死循环位置,包括:

根据所述中断名称获取与所述子程序对应的起始地址;

根据所述断点地址和所述起始地址计算相对地址;

在所述反汇编代码中查找所述相对地址对应的源码,并根据所述源码定位所述外部中断服务程序的死循环位置。

一种死循环的定位装置,所述装置包括:

中断触发模块,用于当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断所述外部中断服务程序;

信息获取模块,用于获取通过触发快速中断服务程序中断所述外部中断服务程序时所产生的中断结果;

次数获取模块,用于获取触发所述快速中断服务程序中断所述外部中断服务程序的触发次数;

重复执行模块,用于当所述触发次数小于预设触发次数时,执行所述触发快速中断服务程序中断所述外部中断服务程序的步骤;获取每次产生的中断结果,并根据获取的中断结果生成中断信息;

代码生成模块,用于根据所述中断信息生成反汇编代码;

死循环定位模块,用于获取与所述中断信息对应的断点地址,根据所述断点地址以及所述反汇编代码定位所述外部中断服务程序的死循环位置。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断所述外部中断服务程序;

获取通过触发快速中断服务程序中断所述外部中断服务程序时所产生的中断结果;

获取触发所述快速中断服务程序中断所述外部中断服务程序的触发次数;

当所述触发次数小于预设触发次数时,执行所述触发快速中断服务程序中断所述外部中断服务程序的步骤;获取每次产生的中断结果,并根据获取的中断结果生成中断信息;

根据所述中断信息生成反汇编代码;

获取与中断信息对应的断点地址,根据所述断点地址以及所述反汇编代码定位所述外部中断服务程序的死循环位置。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断所述外部中断服务程序;

获取通过触发快速中断服务程序中断所述外部中断服务程序时所产生的中断结果;

获取触发所述快速中断服务程序中断所述外部中断服务程序的触发次数;

当所述触发次数小于预设触发次数时,执行所述触发快速中断服务程序中断所述外部中断服务程序的步骤;获取每次产生的中断结果,并根据获取的中断结果生成中断信息;

根据所述中断信息生成反汇编代码;

获取与所述中断信息对应的断点地址,根据所述断点地址以及所述反汇编代码定位所述外部中断服务程序的死循环位置。

上述死循环的定位方法、装置、计算机设备和存储介质,当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断外部中断服务程序,获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果,获取触发快速中断服务程序中断外部中断服务程序的触发次数,当触发次数小于预设触发次数时,再次触发快速中断服务程序中断外部中断服务程序,并生成中断结果,获取每次产生的中断结果,并根据获取的中断结果生成中断信息,根据中断信息生成反汇编代码,获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。由于快速中断服务程序的优先级高于外部中断服务程序的优先级,通过触发快速中断服务程序来对出现死循环的外部中断服务程序进行中断,并根据中断信息中的断点地址和生成的反汇编代码对死循环进行定位,无需插入调试信息输出语句或者通过硬件调试工具来定位,可以提高死循环的定位效率。

附图说明

图1为一个实施例中死循环的定位方法的应用环境图;

图2为一个实施例中死循环的定位方法的流程示意图;

图3为另一个实施例中死循环的定位方法的流程示意图;

图4为一个实施例中死循环的定位装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的死循环的定位方法,可以应用于如图1所示的应用环境中。如图1所示,该应用环境包括计算机设备110。当计算机设备110检测到外部中断服务程序出现死循环时,计算机设备110可以触发快速中断服务程序,快速中断服务程序可以用于中断外部中断服务程序。计算机设备110可以获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果,计算机设备110可以获取触发快速中断服务程序中断外部中断服务程序的触发次数,当触发次数小于预设触发次数时,计算机设备110可以再次触发快速中断服务程序中断外部中断服务程序,并再次生成中断结果,直到计算机设备110获取的触发次数不小于预设触发次数。计算机设备110可以获取每次产生的中断结果,并根据获取的中断结果生成中断信息。计算机设备110可以根据中断信息生成反汇编代码。计算机设备110可以获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。可以理解的是,计算机设备110可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。

在一个实施例中,如图2所示,提供了一种死循环的定位方法,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤:

步骤202,当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断外部中断服务程序。

外部中断服务程序简称irq(interruptrequest)中断,是指中央处理器中的通用中断请求,用于计算机设备中各个模块的中断处理。irq中断可以同时支持很多种irq中断源,且irq中断的运行优先级高于非中断程序,在触发时即开始运行相应的服务程序。

快速中断服务程序简称fiq(fastinterruptrequest)中断,是指中央处理器中的快速中断请求,用于计算机设备中快速、低延迟的中断处理。fiq中断可以支持一种或较少的几种中断源,其运行优先级高于irq中断,在触发时即开始运行相应的服务程序。

死循环是指靠自身控制无法终止的程序。外部中断服务程序出现死循环是指计算机设备的系统陷入irq中断服务程序中不能结束和退出,从而导致系统程序以及所有应用程序不再向预期的后续流程执行,部分irq中断或所有irq中断将不再被响应。

计算机设备可以对系统中各个程序的执行进行检测。当计算机设备检测到外部中断服务程序出现死循环时,计算机设备可以触发快速中断服务程序。由于快速中断服务程序的优先级要高于外部中断服务程序的优先级,当计算机设备触发快速中断服务程序时,计算机设备可以立即优先执行快速中断服务程序,从而使得外部中断服务程序被中断。

步骤204,获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果。

在触发快速中断服务程序来中断外部中断服务程序时,计算机设备可以获取产生的中断结果。其中,中断结果中可以包含有被中断程序的中断名称、被中断程序的断点地址、被中断程序的运行模式、被中断程序的断点处代码、irq中断号以及其他结果,在此不做限定。

步骤206,获取触发快速中断服务程序中断外部中断服务程序的触发次数。

计算机设备中可以有一个计数器,用于记录触发快速中断服务程序中断外部中断服务程序的触发次数。当第一次触发快速中断服务程序中断外部中断服务程序时,计数器可以将触发次数计为1,当再次出发快速中断服务程序中断外部中断服务程序时,计数器可以将触发次数计为2。

计算机设备可以实时获取到的计数器中触发快速中断服务程序中断外部中断服务程序的触发次数。

步骤208,当触发次数小于预设触发次数时,触发快速中断服务程序中断外部中断服务程序,获取每次产生的中断结果,并根据获取的中断结果生成中断信息。

预设触发次数可以是用户预先设置好的,还可以是计算机设备生成的。其中,预设触发次数可以与中断源相关,当中断源为指定的非定时器的中断源时,预设触发次数可以设置为10次、20次等;当中断源为定时器中断源时,定时器可以按照设置的中断触发周期触发快速中断服务程序中断外部中断服务程序,例如,定时器中设置的中断触发周期为10s/次,定时器可以每隔10s触发一次快速中断服务程序中断外部中断服务程序。

计算机设备在获取到触发次数后,可以将获取的触发次数与预设触发次数进行比较,并得到比较结果。当计算机设备获取的比较结果为触发次数小于预设触发次数时,计算机设备可以再次触发快速中断服务程序中断外部中断服务程序,并再次获取触发快速中断服务程序中断外部中断服务程序所产生的中断结果,直到计算机设备获取的触发次数不小于预设触发次数。

当触发次数大于预设触发次数时,计算机设备可以获取每次产生的中断结果,并根据获取的中断结果生成中断信息。即,计算机设备生成的中断信息中可以包含有每次产生的中断结果。

步骤210,根据中断信息生成反汇编代码。

反汇编是指把目标代码转为汇编代码的过程,也就是把机器语言转换为汇编语言。其中,机器语言是指用二进制代码表示的计算机设备可以直接识别和执行的一种机器指令;汇编语言又称为符号语言,特定的汇编语言和特定的机器语言指令集是一一对应的,汇编语言是便于用户辨别、记忆以及书写的语言。

计算机设备获取到的中断信息可以是用机器语言表示的。计算机设备在获取到中断信息后,可以根据获取的中断信息生成对应的反汇编代码。其中,计算机设备获取到的中断信息可以是每次触发快速中断服务程序中断外部中断服务程序时,所产生的中断结果的集合。

步骤212,获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。

计算机设备可以获取与中断信息对应的断点地址,其中,断点地址为外部中断服务程序的断点地址。计算机设备可以获取中断信息对应的断点地址,计算机设备可以根据断点地址在反汇编代码中查找到与断点地址对应的代码,计算机设备可以从断点地址对应的代码中定位到外部中断服务程序的死循环位置。

在本实施例中,当计算机设备检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断外部中断服务程序,获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果,获取触发快速中断服务程序中断外部中断服务程序的触发次数,当触发次数小于预设触发次数时,再次触发快速中断服务程序中断外部中断服务程序,并生成中断结果,根据所有中断结果生成中断信息,并根据中断信息生成反汇编代码,获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。由于快速中断服务程序的优先级高于外部中断服务程序的优先级,通过触发快速中断服务程序来对出现死循环的外部中断服务程序进行中断,并根据中断信息中的断点地址和生成的反汇编代码对死循环进行定位,无需插入调试信息输出语句或者通过硬件调试工具来定位,可以提高死循环的定位效率。其中,外部中断服务程序的死循环可以是系统程序的死循环,还可以是营养程序的死循环等,通过触发快速中断服务程序来中断外部中断服务程序可以使死循环定位应用得更加广泛,可以提高多种死循环定位的有效性和灵活性。

在一个实施例中,提供的一种死循环的定位方法还可以包括确定目标中断源的过程,具体包括:遍历中断源;从中断源中确定符合预设条件的目标中断源;当检测到外部中断服务程序出现死循环时,通过目标中断源触发快速中断服务程序中断外部中断服务程序。

中断源可以用于表示能够发出中断请求信号的来源。在一个实施例中,任何用于触发外部中断服务程序的中断源均可以被设置为用于触发快速中断服务程序的中断源。目标中断源可以用于触发快速中断服务程序,使得外部中断服务程序被中断。中断源可以是通用输入输出端口gpio(generalpurposeinput/output)、插入磁卡的端口、连接计算机设备的键盘等。预设条件可以是用户设置的,还可以是计算机设备根据各个中断源的使用情况设置的。符合预设条件的中断源可以是处于空闲的中断源、未陷入死循环的中断源、指定的中断源等。

计算机设备可以获取设置好的预设条件。计算机设备可以对所有的中断源进行遍历,并根据预设条件在所有的中断源中确定符合预设条件的目标中断源。其中,目标中断源可以是便于用户进行人工操作的中断源。预设条件可以是用户通过计算机设备预先设置好的,还可以是计算机设备根据中断源的使用状态进行设置的。例如,计算机设备获取到的预设条件是处于空闲的中断源,计算机设备可以在所有的中断源中查找处于空闲的中断源,此时,可以对计算机设备中的硬件电路进行修改,计算机设备可以将查找到的处于空闲的中断源作为目标中断源。

当计算机设备没有查找到符合预设条件的目标中断源时,计算机设备可以选择一个处于空闲状态的定时器作为目标中断源,定时器可以定时触发快速中断服务程序来中断外部中断服务程序。

当计算机设备检测到外部中断服务程序出现死循环时,计算机设备可以通过目标中断源来触发快速中断服务程序,并通过快速中断服务程序中断外部中断服务程序。例如,计算机设备确定的目标中断源为通用输入输出端口gpio,当计算机设备检测到外部中断服务程序出现死循环时,计算机设备可以通过通用输入输出端口gpio来触发快速中断服务程序,从而使快速中断服务程序中断外部中断服务程序。

在本实施例中,计算机设备通过遍历中断源,从中断源中确定符合预设条件的目标中断源,当检测到外部中断服务程序出现死循环时,通过目标中断源触发快速中断服务程序中断外部中断服务程序。计算机设备通过预设条件查找到符合预设条件的目标中断源,可以快速的找到目标中断源,从而提高快速中断服务程序中断外部中断服务程序的效率。

在一个实施例中,提供的一种死循环的定位方法还可以包括中断外部中断服务程序的过程,具体包括:获取与目标中断源对应的中断源程序,并将中断源程序写入快速中断服务程序;提取中断源程序中的中断处理子程序;通过目标中断源触发中断处理子程序中断外部中断服务程序。

目标中断源对应的中断源程序可以用于触发中断源执行中断,其中,中断源程序中可以包含有断点信息采集代码、中断处理子程序、断点地址检索、断点地址转换以及断点信息输出代码等。计算机设备可以获取与目标中断源对应的中断源程序,计算机设备可以将中断源程序写入快速中断服务程序中。具体的,计算机设备可以将断点信息采集代码应插入在快速中断服务程序的头部,用于采集到待输出的中断信息。其中,中断信息可以包括被中断程序的断点地址、被中断程序的运行模式、被中断程序的断点处代码、当前正被服务的外部中断号等,还可以包括其他信息,在此不做限定。其中,断点地址检索、断点地址转换以及断点信息输出代码可以位于中断处理子程序之后。断点地址检索用于根据断点地址检索到对应的子程序名称,并获取子程序名称对应子程序的起始地址。断点地址转换用于将断点地址转换为相对地址,用于死循环定位。断点信息输出代码用于输出断点信息采集代码所采集到的断点信息。

计算机设备可以根据目标中断源决定中断处理子程序的实现方式。例如,当目标中断源为从外部中断服务程序对应的中断源中选择的中断源时,表示目标中断源的中断处理子程序已经存储在计算机设备中,计算机设备可以从中断源程序中提取中断处理子程序;当目标中断源为处于空闲的中断源时,计算机设备可以判断中断源程序中是否存在有中断处理子程序,当中断源程序中存在有中断处理子程序时,计算机设备可以提取中断处理子程序,当中断源程序中不存在中断处理子程序时,计算机设备可以获取到中断处理子程序,并将中断处理子程序写入中断源程序中;当目标中断源为定时器时,计算机设备可以判断中断源程序中是否存在有中断处理子程序,当中断源程序中存在有中断处理子程序时,计算机设备可以提取中断处理子程序,当中断源程序中不存在中断处理子程序时,计算机设备可以获取到中断处理子程序,并将中断处理子程序写入中断源程序中。

计算机设备中可以有多种中断源,每一种中断源可以有多个。例如,计算机设备中可以有串口、gpio端口、usb接口、定时器等中断源,其中,串口可以有4个、gpio端口可以有5个、usb接口可以有3个、定时器可以有8个。同一种中断源的中断处理子程序可以相同的。例如,当串口1和串口2被使用,而串口3未被使用时,串口3的中断处理子程序也是存在的,可以与串口1和串口2的中断处理子程序相同。

计算机设备可以通过目标中断源触发中断处理子程序来中断外部中断服务程序。例如,目标中断源为串口1,计算机设备可以通过串口1的中断处理子程序来中断外部中断服务程序。

在一个实施例中,提供的一种死循环的定位方法还可以包括对目标中断源进行初始化处理的过程,具体包括:获取中断参数,中断参数包括中断模式、触发模式、中断触发周期中的至少一种;根据中断参数对目标中断源进行初始化处理,得到处理后的目标中断源;处理后的目标中断源用于触发快速中断服务程序。

其中,中断模式可以是fiq中断模式、irq中断模式等,触发模式可以是边沿触发、水平触发、脉冲触发等,中断触发周期可以是3秒、5秒、10秒等,在此不做限定。终端参数可以用于对目标中断源进行调整。其中,中断参数可以是用户通过计算机设备进行设置的。计算机设备在获取到中断参数后,可以对目标中断源进行初始化处理。具体的,计算机设备可以根据获取到的中断参数对目标中断源的参数进行调整。例如,计算机设备获取到的中断参数中,中断模式为fiq中断模式、触发模式为边沿触发、中断触发周期为10秒,计算机设备可以将目标中断源的中断模式调整为fiq中断模式,将触发模式调整为边沿触发,将中断触发周期调整为10秒。

其中,对目标中断源进行初始化处理还可以包括计算机设备控制fiq中断开启,可以使得fiq中断源更早进入工作状态。计算机设备可以对中断信息的输出通道进行初始化,并开启中断信息的输出通道,便于中断信息的快速输出。

在本实施例中,计算机设备通过获取中断参数,中断参数包括中断模式、触发模式、中断触发周期中的至少一种,根据中断参数对目标中断源进行初始化处理,得到处理后的目标中断源,处理后的目标中断源用于触发快速中断服务程序。计算机设备通过预先对目标中断源的参数进行初始化处理,可以使目标中断源更早的进入工作状态,计算机设备在使用目标中断源来触发快速中断服务程序时,可以更加的快速和便捷。

在一个实施例中,提供的一种死循环的定位方法还可以包括输出定位信息的过程,具体包括:从预先设置的输出通道中确定目标输出通道;根据断点地址以及反汇编代码生成外部中断服务程序的死循环的定位信息;通过目标输出通道以轮询方式输出定位信息。

输出通道可以用于输出信息,目标输出通道可以用于输出定位信息。预先设置的输出通道可以是计算机设备中的通讯接口、屏幕、与计算机设备连接的打印机或者其他输出通道等,在此不做限定。计算机设备可以从预先设置的输出通道中确定目标输出通道。其中,目标输出通道可以是计算机设备随机选择的,还可以是用户通过计算机设备从输出通道中选择的。

计算机设备可以根据断点地址以及反汇编代码生成外部中断服务程序的死循环的定位信息。由于反汇编代码是根据中断信息生成的,中断信息中包含有中断地址,因此,反汇编代码中包含有中断地址对应的代码。计算机设备可以根据中断地址以及反汇编代码生成外部中断服务程序的死循环的定位信息。具体的,计算机设备可以获取到多个不同的中断信息,每个中断信息中的中断地址可以是不同的。计算机设备根据不同的中断信息生成不同的反汇编代码,计算机设备可以查找到与中断地址对应的中断信息,进而查找到中断信息对应的反汇编代码,从而生成定位信息。具体的,计算机设备可以将中断信息对应的机器码按照顺序一一转换为源代码,即反汇编代码,计算机设备可以根据中断信息查找对应的源代码,并查找到源代码的源代码行,从而根据源代码行的位置定位到故障代码的位置。由于计算机设备获取到的中断信息不同,因此生成的反汇编代码也不同,从而导致生成的定位信息也不相同。

轮询是指是计算机设备中的中央处理器以一定的周期按次序查询每一个输出通道,看是否有数据输入或输出的要求,若有,则进行相应的输入/输出服务;若无,或者输入/输出服务处理完毕,中央处理器就接着查询下一个输出通道。计算机设备中可以生成多个不同的定位信息,当这些定位信息需要输出时,计算机设备可以采用轮询的方式分别将这多个不同的定位信息进行输出。

在本实施例中,计算机设备从预先设置的输出通道中确定目标输出通道,根据断点地址以及反汇编代码生成外部中断服务程序的死循环的定位信息,通过目标输出通道以轮询方式输出定位信息。计算机设备通过选择目标输出通道以轮询的方式将定位信息输出,可以将定位信息通过目标输出通道输出到目标位置,通过轮询的方式将定位信息进行输出,可以确保定位信息的成功输出。

在一个实施例中,提供的一种死循环的定位方法还可以包括生成反汇编代码的过程,具体包括:提取中断信息中的中断名称,中断名称为外部中断服务程序出现死循环时的子程序名称;根据中断名称获取外部中断服务程序出现死循环时的子程序;根据子程序生成反汇编代码。

中断名称为外部中断服务程序出现死循环时的程序名称。例如,外部中断服务程序在执行a程序时出现了死循环,中断名称为a程序。计算机设备在获取了所有中断信息后,可以提取中断信息中的中断名称,根据中断名称查找外部中断服务程序出现死循环时的子程序。例如,计算机设备提取的中断名称为a程序,计算机设备可以查找在外部中断程序出现死循环时的a程序。计算机设备在提取到中断信息中的中断名称后,可以分别查找到与中断名称对应的子程序。计算机设备可以根据查找到的至少一个子程序生成反汇编代码。

在本实施例中,计算机设备通过提取中断信息中的中断名称,中断名称为外部中断服务程序出现死循环时的子程序名称,根据中断名称获取查找外部中断服务程序出现死循环时的子程序,根据子程序生成反汇编代码。计算机设备可以根据中断名称查找到出现死循环时的子程序,可以提高查找死循环程序的效率。

在一个实施例中,计算机设备可以根据断点信息中的中断名称知道发生死循环的子程序。计算机设备可以采用反汇编工具对发生死循环的多个子程序执行码进行反汇编,生成一个反汇编文件。其中,每个汇编代码行包括相对地址、机器码、汇编代码等三部分内容。计算机设备可以在反汇编文件中查找出断点地址,再找出对应的源码。具体的,计算机设备可以在发生死循环的程序源码中查找对应的源码,从而确定死循环代码。

在一个实施例中,提供的一种死循环的定位方法还可以包括定位死循环的过程,具体包括:根据中断名称获取与子程序对应的起始地址;根据断点地址和起始地址计算相对地址;在反汇编代码中查找相对地址对应的源码,并根据源码定位外部中断服务程序的死循环位置。

计算机设备在获取中断名称后,可以获取与中断名称对应的子程序,从而获取到子程序对应的起始地址。起始地址可以用于表示执行外部中断服务程序时,与获取的断点地址对应程序的开始位置。相对地址可以用于表示外部中断服务程序出现死循环时对应程序被执行的地址。相对地址可以根据断点地址和起始地址计算出来。具体的,相对地址可以是断点地址减去起始地址。

计算机设备查找到断点地址对应的中断名称后,可以查找到中断名称对应的反汇编代码。计算机设备可以根据计算出来的相对地址在反汇编代码中查找相对地址对应的源码。计算机设备可以根据查找到的源码定位外部中断服务程序的死循环位置。

在本实施例中,计算机设备根据中断名称获取与子程序对应的起始地址,根据断点地址和起始地址计算相对地址,在反汇编代码中查找相对地址对应的源码,并根据源码定位外部中断服务程序的死循环位置。计算机设备根据中断信息中的中断名称获取到相对地址,从而根据相对地址对应的源码定位外部中断服务程序的死循环,可以提高死循环的定位效率。

在一个实施例中,如图3所示,提供了一种死循环的定位方法,具体的实现步骤如下:

步骤302,从预先设置的输出通道中确定目标输出通道。

步骤304,遍历中断源,从中断源中确定符合预设条件的目标中断源。

步骤306,获取与目标中断源对应的中断源程序,并将中断源程序写入快速中断服务程序。

步骤308,提取中断源程序中的中断处理子程序。

步骤310,获取中断参数,根据中断参数对目标中断源进行初始化处理,得到处理后的目标中断源。

步骤312,运行外部中断服务程序,当检测到外部中断服务程序出现死循环时,通过处理后的目标中断源触发中断处理子程序中断外部中断服务程序。

步骤314,获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果。

步骤316,获取触发快速中断服务程序中断外部中断服务程序的触发次数。

当触发次数小于预设触发次数时,执行步骤312至步骤316。

步骤318,获取每次产生的中断结果,并根据获取的中断结果生成中断信息。

步骤320,获取与中断信息对应的中断名称,根据中断名称查找外部中断服务程序出现死循环时的子程序。

步骤322,查找与断点地址对应的起始地址,根据断点地址和起始地址计算相对地址。

步骤324,生成反汇编代码。

步骤326,在反汇编代码中查找相对地址对应的源码,并根据源码定位外部中断服务程序的死循环。

步骤328,根据断点地址以及反汇编代码生成外部中断服务程序的死循环的定位信息。

步骤330,通过目标输出通道以轮询方式输出定位信息。

应该理解的是,虽然上述各个流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述各个流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种死循环的定位装置,包括:中断触发模块410、信息获取模块420、次数获取模块430、重复执行模块440、代码生成模块450以及死循环定位模块460,其中:

中断触发模块410,用于当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断外部中断服务程序。

信息获取模块420,用于获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果。

次数获取模块430,用于获取触发快速中断服务程序中断外部中断服务程序的触发次数。

重复执行模块440,用于当触发次数小于预设触发次数时,执行触发快速中断服务程序中断外部中断服务程序的步骤;获取每次产生的中断结果,并根据获取的中断结果生成中断信息。

代码生成模块450,用于根据中断信息生成反汇编代码。

死循环定位模块460,用于获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。

在本实施例中,当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断外部中断服务程序,获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果,获取触发快速中断服务程序中断外部中断服务程序的触发次数,当触发次数小于预设触发次数时,再次触发快速中断服务程序中断外部中断服务程序,并生成中断结果,根据所有中断结果生成中断信息,并根据中断信息生成反汇编代码,获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。由于快速中断服务程序的优先级高于外部中断服务程序的优先级,通过触发快速中断服务程序来对出现死循环的外部中断服务程序进行中断,并根据中断信息对应的断点地址和生成的反汇编代码对死循环进行定位,无需插入调试信息输出语句或者通过硬件调试工具来定位,可以提高死循环的定位效率。

在一个实施例中,死循环定位模块460还用于遍历中断源,从中断源中确定符合预设条件的目标中断源,当检测到外部中断服务程序出现死循环时,通过目标中断源触发快速中断服务程序中断外部中断服务程序。

在一个实施例中,死循环定位模块460还用于获取与目标中断源对应的中断源程序,并将中断源程序写入快速中断服务程序;提取中断源程序中的中断处理子程序;通过目标中断源触发中断处理子程序中断外部中断服务程序。

在一个实施例中,死循环定位模块460还用于获取中断参数,中断参数包括中断模式、触发模式、中断触发周期中的至少一种,根据中断参数对目标中断源进行初始化处理,得到处理后的目标中断源,处理后的目标中断源用于触发快速中断服务程序。

在一个实施例中,提供的一种死循环的定位装置还可以包括信息输出模块,用于从预先设置的输出通道中确定目标输出通道,根据断点地址以及反汇编代码生成外部中断服务程序的死循环的定位信息,通过目标输出通道以轮询方式输出定位信息。

在一个实施例中,代码生成模块450还用于提取中断信息中的中断名称,中断名称为外部中断服务程序出现死循环时的子程序名称,根据中断名称获取外部中断服务程序出现死循环时的子程序,根据子程序生成反汇编代码。

在一个实施例中,死循环定位模块460还用于查根据所述中断名称获取与所述子程序对应的起始地址,根据断点地址和起始地址计算相对地址,在反汇编代码中查找相对地址对应的源码,并根据源码定位外部中断服务程序的死循环位置。

关于死循环的定位装置的具体限定可以参见上文中对于死循环的定位方法的限定,在此不再赘述。上述死循环的定位装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏、输出装置和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种死循环的定位方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。计算机设备的输出装置可以用于输出定位到的死循环位置。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断外部中断服务程序;

获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断信息;

获取触发快速中断服务程序中断外部中断服务程序的触发次数;

当触发次数小于预设触发次数时,执行触发快速中断服务程序中断外部中断服务程序的步骤;获取每次产生的中断结果,并根据获取的中断结果生成中断信息;

根据中断信息生成反汇编代码;

获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:遍历中断源;从中断源中确定符合预设条件的目标中断源;当检测到外部中断服务程序出现死循环时,通过目标中断源触发快速中断服务程序中断外部中断服务程序。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取与目标中断源对应的中断源程序,并将中断源程序写入快速中断服务程序;提取中断源程序中的中断处理子程序;通过目标中断源触发中断处理子程序中断外部中断服务程序。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取中断参数,中断参数包括中断模式、触发模式、中断触发周期中的至少一种;根据中断参数对目标中断源进行初始化处理,得到处理后的目标中断源;处理后的目标中断源用于触发快速中断服务程序。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:从预先设置的输出通道中确定目标输出通道;根据断点地址以及反汇编代码生成外部中断服务程序的死循环的定位信息;通过目标输出通道以轮询方式输出定位信息。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:提取中断信息中的中断名称,中断名称为外部中断服务程序出现死循环时的子程序名称;根据中断名称获取外部中断服务程序出现死循环时的子程序;根据子程序生成反汇编代码。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据中断名称获取与子程序对应的起始地址;根据断点地址和起始地址计算相对地址;在反汇编代码中查找相对地址对应的源码,并根据源码定位外部中断服务程序的死循环位置。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

当检测到外部中断服务程序出现死循环时,触发快速中断服务程序中断外部中断服务程序;

获取通过触发快速中断服务程序中断外部中断服务程序时所产生的中断结果;

获取触发快速中断服务程序中断外部中断服务程序的触发次数;

当触发次数小于预设触发次数时,执行触发快速中断服务程序中断外部中断服务程序的步骤;获取每次产生的中断结果,并根据获取的中断结果生成中断信息;

根据中断信息生成反汇编代码;

获取与中断信息对应的断点地址,根据断点地址以及反汇编代码定位外部中断服务程序的死循环位置。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:遍历中断源;从中断源中确定符合预设条件的目标中断源;当检测到外部中断服务程序出现死循环时,通过目标中断源触发快速中断服务程序中断外部中断服务程序。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取与目标中断源对应的中断源程序,并将中断源程序写入快速中断服务程序;提取中断源程序中的中断处理子程序;通过目标中断源触发中断处理子程序中断外部中断服务程序。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取中断参数,中断参数包括中断模式、触发模式、中断触发周期中的至少一种;根据中断参数对目标中断源进行初始化处理,得到处理后的目标中断源;处理后的目标中断源用于触发快速中断服务程序。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:从预先设置的输出通道中确定目标输出通道;根据断点地址以及反汇编代码生成外部中断服务程序的死循环的定位信息;通过目标输出通道以轮询方式输出定位信息。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:提取中断信息中的中断名称,中断名称为外部中断服务程序出现死循环时的子程序名称;根据中断名称获取外部中断服务程序出现死循环时的子程序;根据子程序生成反汇编代码。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据中断名称获取与子程序对应的起始地址;根据断点地址和起始地址计算相对地址;在反汇编代码中查找相对地址对应的源码,并根据源码定位外部中断服务程序的死循环位置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1