关中断超时的处理方法及装置、电子设备、存储介质
文献发布时间:2024-04-18 19:58:26
技术领域
本申请涉及计算机技术领域,特别涉及一种关中断超时的处理方法及装置、电子设备、计算机可读存储介质。
背景技术
业务程序的代码中,通常在合适的位置需要关闭中断,以保证业务程序能够正常运行。然而,由于业务软件的开发者的疏忽或业务水平原因,可能在业务软件的代码里长时间关闭中断,这又会导致运行业务程序的计算机系统(特别是嵌入式系统)实时性降低,进而产生一系列难以跟踪和定位的问题。为解决这一问题,亟需一种关中断超时的处理方案,以便在业务程序的调试和测试阶段及时确定程序代码的问题。
发明内容
本申请实施例的目的在于提供一种关中断超时的处理方法及装置、电子设备、存储介质,用于及时确定业务软件中导致关中断超时问题的程序代码。
一方面,本申请提供了一种关中断超时的处理方法,包括:
在业务软件运行过程中,通过硬件监控模块对指定寄存器的指定状态位进行监控;其中,所述指定状态位表征中断是否被禁用;
如果所述指定状态位表征中断被禁用,通过所述硬件监控模块内的定时器对中断禁用时长进行计时;
当所述定时器的计时时长超过时长阈值时,通过所述硬件监控模块触发不可屏蔽中断;
响应于所述不可屏蔽中断,对所述业务软件进行栈回溯,以确定关中断的目标代码。
在一实施例中,所述指定寄存器为程序状态寄存器,所述指定状态位为中断禁止位。
在一实施例中,所述指定寄存器为所述业务软件内置的寄存器,所述指定状态位由所述业务软件基于自身中断启用情况而设置。
在一实施例中,所述方法还包括:
当所述指定状态位表征中断被使能,通过所述硬件监控模块将所述定时器复位,并停止计时。
在一实施例中,所述方法还包括:
响应于所述不可屏蔽中断,生成所述业务软件对应的错误日志;其中,所述错误日志包括中断关闭的开始时间、中断禁用时长、所述计时时长。
在一实施例中,所述方法还包括:
在生成关中断超时的处理结果之后,输出展示所述处理结果。
另一方面,本申请提供了一种关中断超时的处理装置,包括:
监控模块,用于在业务软件运行过程中,通过硬件监控模块对指定寄存器的指定状态位进行监控;其中,所述指定状态位表征中断是否被禁用;
计时模块,用于如果所述指定状态位表征中断被禁用,通过所述硬件监控模块内的定时器对中断禁用时长进行计时;
触发模块,用于当所述定时器的计时时长超过时长阈值时,通过所述硬件监控模块触发不可屏蔽中断;
确定模块,用于响应于所述不可屏蔽中断,对所述业务软件进行栈回溯,以确定关中断的目标代码。
在一实施例中,所述确定模块,还用于:
响应于所述不可屏蔽中断,生成所述业务软件对应的错误日志;其中,所述错误日志包括中断关闭的开始时间、中断禁用时长、所述计时时长。
进一步的,本申请提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述关中断超时的处理方法。
此外,本申请提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序可由处理器执行以完成上述关中断超时的处理方法。
本申请方案,在业务软件的代码存在长时间关闭中断的问题时,可以及时确定关中断超时的情况,并触发不可屏蔽中断以对业务软件栈回溯从而确定关中断的目标代码,可以及时准确地指示业务软件中存在问题的程序代码。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。
图1为本申请一实施例提供的电子设备的结构示意图;
图2为本申请一实施例提供的关中断超时的处理方法的流程示意图;
图3为本申请一实施例提供的关中断超时的处理装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图1中以一个处理器11为例。处理器11和存储器12通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。在一实施例中,电子设备1可以是计算机、服务器、服务器集群等智能设备,用于执行关中断超时的处理方法。
存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory,简称EPROM),可编程只读存储器(Programmable Red-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序可由处理器11执行以完成本申请提供的关中断超时的处理方法。
参见图2,为本申请一实施例提供的关中断超时的处理方法的流程示意图,如图2所示,该方法可以包括以下步骤210-步骤240。
步骤210:在业务软件运行过程中,通过硬件监控模块对指定寄存器的指定状态位进行监控;其中,指定状态位表征中断是否被禁用。
其中,业务软件是需要进行调试和测试的软件,或者,业务软件是当前正在应用的软件。
本方案应用于计算机、服务器、服务器集群等智能设备,该智能设备搭载硬件监控模块,该硬件监控模块用于对指定寄存器进行监控。
指定存储器的指定状态位可以表征智能设备所搭载的计算机系统的中断是否处于使能状态。比如:若指定状态位是1,表示中断被禁用;若指定状态位是0,表示中断被使能。
业务软件在调试、测试或应用时,开启运行以后,智能设备可以通过硬件监控模块对指定寄存器的指定状态位进行监控,从而确定当前系统中断是否被禁用。一方面,如果中断处于使能状态,则无需处理,可以继续监控指定状态位。另一方面,如果中断被禁用,可以执行如下步骤220。
在一实施例中,指定寄存器为ARM(Advanced RISC Machine)架构中的程序状态寄存器(CPSR,Current Program Status Register),指定状态位为程序状态寄存器中的中断禁止位。这种情况下,可以通过监控ARM内核中的寄存器确定中断是否被禁用。
在一实施例中,指定寄存器为业务软件内置的寄存器,指定状态位由业务软件基于自身中断启用情况而设置。这里,在开发阶段业务软件内可以设置一个指定寄存器,该指定寄存器用于更新业务软件自身运行过程中对中断的禁用、使能状态。比如:当业务软件禁用中断,业务软件可以将其内部的指定寄存器的指定状态位置为1;当业务软件使能中断,业务软件可以将其内部的指定寄存器的指定状态位置为0。这种情况下,无需关注系统内核,可根据业务软件内部自定义的寄存器确定中断是否被禁用。
步骤220:如果指定状态位表征中断被禁用,通过硬件监控模块内的定时器对中断禁用时长进行计时。
步骤230:当定时器的计时时长超过时长阈值时,通过硬件监控模块触发不可屏蔽中断。
硬件监控模块内设置定时器。在指定状态位表征中断被禁用的情况下,智能设备可以通过该定时器对中断禁用时长进行计时。在计时过程中,智能设备可以检查定时器的计时时长是否超过时长阈值。这里,时长阈值用于表征中断过长的时长,可以根据应用需要进行配置。
在定时器的计时时长超过时长阈值的情况下,智能设备可以通过硬件监控模块触发不可屏蔽中断(NMI,Non Maskable Interrupt),该不可屏蔽中断由硬件监控模块提交至智能设备的中央处理器。
步骤240:响应于不可屏蔽中断,对业务软件进行栈回溯,以确定关中断的目标代码。
智能设备的中央处理器可以响应于该不可屏蔽中断,利用调式工具对业务软件进行栈回溯,从而输出当前的函数调用栈,进而根据调用栈往后追踪业务软件在关中断的代码,作为目标代码。
通过上述措施,在业务软件的代码存在长时间关闭中断的问题时,可以及时确定关中断超时的情况,并触发不可屏蔽中断以对业务软件栈回溯从而确定关中断的目标代码,可以及时准确地指示业务软件中存在问题的程序代码。
在一实施例中,获得目标代码之后,可以将该目标代码作为关中断超时的处理结果,并在智能设备自身的显示器或其对接的显示器上输出展示处理结果。
通过该措施,可以在确定业务软件内导致关中断超时的目标代码之后,进行输出展示,便于调试人员或运维人员查看,以便对业务软件进行优化。
在一实施例中,通过硬件监控模块的定时器对中断禁用时长进行计时的过程中,当指定状态位表征中断被使能,智能设备可以通过硬件监控模块将定时器复位,并停止计时。
比如:指定寄存器的指定状态位由表征中断被禁用的“1”,更新为表征中断被使能的“0”,则可以将定时器复位,并停止计时。
通过这一措施,可以保证定时器的计时时长准确表征中断禁用时长,从而在计时时长超过时长阈值时可以认定中断禁用超时。
在一实施例中,智能设备的中央处理器可以响应于不可屏蔽中断,生成业务软件对应的错误日志。其中,错误日志包括中断关闭的开始时间、中断禁用时长、定时器的计时时长等信息。错误日志可以辅助处理关中断超时的异常情况。
在一实施例中,智能设备的中央处理器响应于不可屏蔽中断生成错误日志的情况下,可以将目标代码和错误日志均作为关中断超时的处理结果,并通过自身的显示器或其对接的显示器进行输出展示。
通过该措施,在不可屏蔽中断触发之后,可以生成错误日志,并将错误日志和目标代码同时输出展示,便于后续调试人员或运维人员快速发现和定位问题,提高了关中断超时的处理效率。
图3是本发明一实施例的一种关中断超时的处理装置的框图,如图3所示,该装置可以包括:
监控模块310,用于在业务软件运行过程中,通过硬件监控模块对指定寄存器的指定状态位进行监控;其中,所述指定状态位表征中断是否被禁用;
计时模块320,用于如果所述指定状态位表征中断被禁用,通过所述硬件监控模块内的定时器对中断禁用时长进行计时;
触发模块330,用于当所述定时器的计时时长超过时长阈值时,通过所述硬件监控模块触发不可屏蔽中断;
确定模块340,用于响应于所述不可屏蔽中断,对所述业务软件进行栈回溯,以确定关中断的目标代码。
在一实施例中,所述指定寄存器为程序状态寄存器,所述指定状态位为中断禁止位。
在一实施例中,所述指定寄存器为所述业务软件内置的寄存器,所述指定状态位由所述业务软件基于自身中断启用情况而设置。
在一实施例中,计时模块320,还用于:
当所述指定状态位表征中断被使能,通过所述硬件监控模块将所述定时器复位,并停止计时。
在一实施例中,所述确定模块340,还用于:
响应于所述不可屏蔽中断,生成所述业务软件对应的错误日志;其中,所述错误日志包括中断关闭的开始时间、中断禁用时长、所述计时时长。
在一实施例中,所述装置还包括展示模块350,用于:
在生成关中断超时的处理结果之后,输出展示所述处理结果。
上述装置中各个模块的功能和作用的实现过程具体详见上述关中断超时的处理方法中对应步骤的实现过程,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
- 日志信息处理方法、装置、电子设备及可读存储介质
- 数据处理方法、装置、计算机可读存储介质和电子设备
- 三维模型处理方法和装置、电子设备、计算机可读存储介质
- 路由数据处理方法、装置、电子设备及存储介质
- 信息处理方法及装置、电子设备和存储介质
- 超时订单处理方法、装置、电子设备及存储介质
- 服务网格超时处理方法、装置、电子设备和存储介质