CN112306729A - 一种程序异常处理方法和装置 - Google Patents

一种程序异常处理方法和装置 Download PDF

Info

Publication number
CN112306729A
CN112306729A CN202011228004.7A CN202011228004A CN112306729A CN 112306729 A CN112306729 A CN 112306729A CN 202011228004 A CN202011228004 A CN 202011228004A CN 112306729 A CN112306729 A CN 112306729A
Authority
CN
China
Prior art keywords
exception
processing
program
handling
address
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
CN202011228004.7A
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.)
Beijing Jinher Software Co Ltd
Original Assignee
Beijing Jinher Software 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 Beijing Jinher Software Co Ltd filed Critical Beijing Jinher Software Co Ltd
Priority to CN202011228004.7A priority Critical patent/CN112306729A/zh
Publication of CN112306729A publication Critical patent/CN112306729A/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/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种程序异常处理方法和装置,属于计算机程序领域;处理方法包括以下步骤:获取程序的异常;采用常规处理方式处理异常,其中常规处理方式包括:调试器、向量化异常处理意见结构化异常处理;当所述常规处理无法处理异常时,调用异常处理函数处理异常。本申请方案通过异常处理函数来处理常规处理方法无法处理的异常,能够解决常规处理方式无法处理某些异常时直接交由系统处理的问题,保证程序的正常运行。

Description

一种程序异常处理方法和装置
技术领域
本发明涉及计算机程序领域,特别地,涉及一种程序异常处理方法和装置。
背景技术
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。一般情况下,在运行过程无法正常处理程序时就会发生一个异常,表示一个错误。例如,未知服务器,连接\读取超时,代理服务器异常代理连接不上。
当程序发生异常时,通常会抛出异常,如果不抛出异常,整个程序就会全部终止,抛出异常后当次执行的程序中断,此时我们需要捕获处理它,否则程序会终止执行。当捕获到异常之后,将异常处理为正常时,程序能够由中断变为正常运行。但是现有的异常处理方式较为简单,经常出现某些异常无法处理后直接交由系统处理,无法保证程序的正常运行。
发明内容
为了克服现有技术的不足,本发明提供一种程序异常处理方法和装置,以解决现有的异常处理方式较为简单,经常出现某些异常无法处理后直接交由系统处理,无法保证程序的正常运行。
本发明解决其技术问题所采用的技术方案是:
一方面,
一种程序异常处理方法,包括以下步骤:
获取所述程序的异常;
采用常规处理方式处理所述异常,所述常规处理方式包括:调试器、向量化异常处理以及结构化异常处理;
当所述常规处理方式无法处理所述异常时,调用异常处理函数处理所述异常。
进一步地,述采用常规处理方式处理所述异常包括:
采用调试器处理所述异常;
当调试器误差处理所述异常时,采用向量化异常处理处理所述异常;
当所有向量化异常处理都无法处理所述异常时,采用结构化异常处理处理所述异常。
进一步地,所述采用常规处理方式处理所述异常还包括:
当所述结构化异常处理无法处理所述异常时,再次采用调试器处理所述异常;
当所述调试器第二次仍无法处理所述异常,则将所述异常发送交由系统处理。
进一步地,所述当所述常规处理方式无法处理所述异常时,调用异常处理函数处理所述异常包括:
当所述结构化异常处理无法处理所述异常时,调用所述异常处理函数处理所述异常。
进一步地,所述异常处理函数注册在所述结构化异常处理的顶层。
进一步地,所述调用所述异常处理函数处理所述异常包括:
获取所述异常处的地址;
根据所述地址获取所述异常处的程序;
提取所述异常处的程序并对所述程序进行修改并模拟运行;
模拟运行通过后获取通过后的程序;
将通过后的程序返回异常处。
进一步地,获取所述异常处的地址后还包括:
根据所述地址判断所述异常是否有意义;
若有意义则进行获取所述异常处的程序;若无意义则不进行处理。
进一步地,根据所述地址判断所述异常是否有意义包括:
若所述地址为零,则所述异常无意义;若所述地址不为零,则所述异常有意义。
进一步地,所述对所述程序进行修改包括:
修改所述程序的堆栈参数和/或寄存器上下文。
进一步地,一种程序异常处理装置,包括:
异常获取模块,用于获取所述程序的异常;
常规处理模块,用于采用常规处理方式处理所述异常,所述常规处理方式包括:调试器、向量化异常处理以及结构化异常处理;
函数处理模块,用于当所述常规处理方式无法处理所述异常时,调用异常处理函数处理所述异常。
本申请采用以上技术方案,至少具备以下有益效果:
本发明的技术方案提供一种程序异常处理方法和装置,处理方法包括以下步骤:获取程序的异常;采用常规处理方式处理异常,其中常规处理方式包括:调试器、向量化异常处理意见结构化异常处理;当所述常规处理无法处理异常时,调用异常处理函数处理异常。本申请方案通过异常处理函数来处理常规处理方法无法处理的异常,能够解决常规处理方式无法处理某些异常时直接交由系统处理的问题,保证程序的正常运行。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种程序异常处理方法流程图;
图2是本发明实施例提供的一种程序异常处理装置结构图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本发明的技术方案进行详细的描述说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本申请所保护的范围。
参照图1,本发明实施例提供一种程序异常处理方法,包括以下步骤:
获取程序的异常;
采用常规处理方式处理异常,常规处理方式包括:调试器、向量化异常处理以及结构化异常处理;
当常规处理方式无法处理异常时,调用异常处理函数处理异常。
本发明实施例提供的一种程序异常处理方法,处理方法包括以下步骤:获取程序的异常;采用常规处理方式处理异常,其中常规处理方式包括:调试器、向量化异常处理意见结构化异常处理;当所述常规处理无法处理异常时,调用异常处理函数处理异常。本申请方案通过异常处理函数来处理常规处理方法无法处理的异常,能够解决常规处理方式无法处理某些异常时直接交由系统处理的问题,保证程序的正常运行。
作为对上述实施例的一种补充说明,采用常规处理方式处理异常包括:
采用调试器处理异常;
当调试器误差处理异常时,采用向量化异常处理处理异常;
当所有向量化异常处理都无法处理异常时,采用结构化异常处理处理异常。
其中,采用常规处理方式处理异常还包括:
当结构化异常处理无法处理异常时,再次采用调试器处理异常;
当调试器第二次仍无法处理异常,则将异常发送交由系统处理。
进一步地,当常规处理方式无法处理异常时,调用异常处理函数处理异常包括:
当结构化异常处理无法处理异常时,调用异常处理函数处理异常。
需要说明的是,异常处理函数注册在结构化异常处理的顶层。
作为本发明实施例一种优选的实现方式,调用异常处理函数处理异常包括:
获取异常处的地址;
根据地址获取异常处的程序;
提取异常处的程序并对程序进行修改并模拟运行;
模拟运行通过后获取通过后的程序;
将通过后的程序返回异常处。
其中,获取异常处的地址后还包括:
根据地址判断异常是否有意义;
若有意义则进行获取异常处的程序;若无意义则不进行处理。
进一步地,根据地址判断异常是否有意义包括:
若地址为零,则异常无意义;若地址不为零,则异常有意义。
具体地,对程序进行修改包括:
修改程序的堆栈参数和/或寄存器上下文。
一个实施例中,本发明还提供了一种程序异常处理装置,如图2所示,包括:
异常获取模块201,用于获取程序的异常;
常规处理模块202,用于采用常规处理方式处理异常,常规处理方式包括:调试器、向量化异常处理以及结构化异常处理;具体地,常规处理模块采用调试器处理异常;当调试器误差处理异常时,采用向量化异常处理处理异常;当所有向量化异常处理都无法处理异常时,采用结构化异常处理处理异常。当结构化异常处理无法处理异常时,再次采用调试器处理异常;当调试器第二次仍无法处理异常,则将异常发送交由系统处理。
函数处理模块203,用于当常规处理方式无法处理异常时,调用异常处理函数处理异常。具体地,当结构化异常处理无法处理异常时,函数处理模块调用异常处理函数处理异常。其中,函数处理模块获取异常处的地址;根据地址获取异常处的程序;提取异常处的程序并对程序进行修改并模拟运行;模拟运行通过后获取通过后的程序;将通过后的程序返回异常处。
需要说明的是,异常处理函数注册在结构化异常处理的顶层。
作为本发明实施例一种可选的实现方式,函数处理模块根据地址判断异常是否有意义;若有意义则进行获取异常处的程序;若无意义则不进行处理。其中,根据地址判断异常是否有意义包括:若地址为零,则异常无意义;若地址不为零,则异常有意义。具体地,函数处理模块对程序进行修改包括:修改程序的堆栈参数和/或寄存器上下文。
本发明实施例提供的一种程序异常处理装置,异常获取模块获取程序的异常;常规处理模块采用常规处理方式处理异常;当常规处理方式无法处理异常时,函数处理模块调用异常处理函数处理异常。函数处理模块在结构化异常处理无法处理异常后,不将异常再次送入调试器,而是通过注册在结构化异常处理顶层的异常处理函数进行处理,将异常的程序单独提取出来,进行修改并模拟运行,修改后如果运行成功则将运行成功的程序返回到原程序中替代异常的程序,这样能够解决程序异常的问题。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种程序异常处理方法,其特征在于,包括以下步骤:
获取所述程序的异常;
采用常规处理方式处理所述异常,所述常规处理方式包括:调试器、向量化异常处理以及结构化异常处理;
当所述常规处理方式无法处理所述异常时,调用异常处理函数处理所述异常。
2.根据权利要求1所述的方法,其特征在于:所述采用常规处理方式处理所述异常包括:
采用调试器处理所述异常;
当调试器误差处理所述异常时,采用向量化异常处理处理所述异常;
当所有向量化异常处理都无法处理所述异常时,采用结构化异常处理处理所述异常。
3.根据权利要求2所述的方法,其特征在于:所述采用常规处理方式处理所述异常还包括:
当所述结构化异常处理无法处理所述异常时,再次采用调试器处理所述异常;
当所述调试器第二次仍无法处理所述异常,则将所述异常发送交由系统处理。
4.根据权利要求2所述的方法,其特征在于:所述当所述常规处理方式无法处理所述异常时,调用异常处理函数处理所述异常包括:
当所述结构化异常处理无法处理所述异常时,调用所述异常处理函数处理所述异常。
5.根据权利要求1所述的方法,其特征在于:所述异常处理函数注册在所述结构化异常处理的顶层。
6.根据权利要求1所述的方法,其特征在于:所述调用所述异常处理函数处理所述异常包括:
获取所述异常处的地址;
根据所述地址获取所述异常处的程序;
提取所述异常处的程序并对所述程序进行修改并模拟运行;
模拟运行通过后获取通过后的程序;
将通过后的程序返回异常处。
7.根据权利要求6所述的方法,其特征在于:获取所述异常处的地址后还包括:
根据所述地址判断所述异常是否有意义;
若有意义则进行获取所述异常处的程序;若无意义则不进行处理。
8.根据权利要求7所述的方法,其特征在于:根据所述地址判断所述异常是否有意义包括:
若所述地址为零,则所述异常无意义;若所述地址不为零,则所述异常有意义。
9.根据权利要求6所述的方法,其特征在于:所述对所述程序进行修改包括:
修改所述程序的堆栈参数和/或寄存器上下文。
10.一种程序异常处理装置,其特征在于,包括:
异常获取模块,用于获取所述程序的异常;
常规处理模块,用于采用常规处理方式处理所述异常,所述常规处理方式包括:调试器、向量化异常处理以及结构化异常处理;
函数处理模块,用于当所述常规处理方式无法处理所述异常时,调用异常处理函数处理所述异常。
CN202011228004.7A 2020-11-06 2020-11-06 一种程序异常处理方法和装置 Pending CN112306729A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011228004.7A CN112306729A (zh) 2020-11-06 2020-11-06 一种程序异常处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011228004.7A CN112306729A (zh) 2020-11-06 2020-11-06 一种程序异常处理方法和装置

Publications (1)

Publication Number Publication Date
CN112306729A true CN112306729A (zh) 2021-02-02

Family

ID=74326308

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011228004.7A Pending CN112306729A (zh) 2020-11-06 2020-11-06 一种程序异常处理方法和装置

Country Status (1)

Country Link
CN (1) CN112306729A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1492320A (zh) * 2002-10-25 2004-04-28 华为技术有限公司 Windows程序异常捕获及定位方法
CN104361076A (zh) * 2014-11-12 2015-02-18 腾讯科技(成都)有限公司 浏览器的异常处理方法和装置
CN105787305A (zh) * 2016-02-26 2016-07-20 西北大学 一种抵抗符号执行和污点分析的软件保护方法
CN109614257A (zh) * 2018-10-23 2019-04-12 平安科技(深圳)有限公司 程序异常的处理方法、装置、计算机存储介质及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1492320A (zh) * 2002-10-25 2004-04-28 华为技术有限公司 Windows程序异常捕获及定位方法
CN104361076A (zh) * 2014-11-12 2015-02-18 腾讯科技(成都)有限公司 浏览器的异常处理方法和装置
CN105787305A (zh) * 2016-02-26 2016-07-20 西北大学 一种抵抗符号执行和污点分析的软件保护方法
CN109614257A (zh) * 2018-10-23 2019-04-12 平安科技(深圳)有限公司 程序异常的处理方法、装置、计算机存储介质及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KNOCKED: "初识Windows异常处理", pages 1 - 4, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/103258431> *
李忻洋: "计算机病毒实验系统关键技术研究与实现", 《中国优秀硕士学位论文全文数据库 社会科学Ⅱ辑》, no. 01, pages 131 - 327 *

Similar Documents

Publication Publication Date Title
CN108388514B (zh) 接口自动化测试方法、装置、设备及计算机可读存储介质
US9612937B2 (en) Determining relevant events in source code analysis
WO2019056475A1 (zh) 测试任务自动化管理方法、装置、设备及存储介质
JP5692414B2 (ja) 検知装置、検知プログラムおよび検知方法
CN114647853A (zh) 提高分布式应用程序漏洞检测准确性的方法及系统
CN107967192B (zh) 一种智能终端的系统崩溃处理方法和装置
CN112306729A (zh) 一种程序异常处理方法和装置
CN108959070B (zh) 一种基于代码对象的Python钩子函数方法和装置
CN116738091A (zh) 页面监控方法、装置、电子设备及存储介质
CN111176987A (zh) 前端日志统一输出的方法、装置、计算机设备及存储介质
CN115185734A (zh) 基于中断的固件异常诊断方法、装置、计算机设备及存储介质
CN113778763B (zh) 一种三方接口服务故障智能切换方法及系统
CN115756935A (zh) 嵌入式软件系统的异常故障定位方法、装置及设备
US20150331772A1 (en) Methods for updating diagnostic tools on a hardware device and devices thereof
US20040088607A1 (en) Method and apparatus for error handling in networks
CN110727537A (zh) 统一处理响应报文的方法、装置、计算机设备及存储介质
CN111061613A (zh) 前端异常监控方法、装置及计算机设备
CN114285756A (zh) 服务调用依赖关系分析方法及相关装置
CN115640236B (zh) 一种脚本质量的检测方法及计算设备
US11652683B2 (en) Failure notification system, failure notification method, failure notification device, and failure notification program
CN107885618A (zh) 基于网络游戏的数据监控方法、装置、设备及存储介质
CN117076953A (zh) 异步服务异常处理方法、电子设备及计算机可读存储介质
US7065691B2 (en) Apparatus and method for saving precise system state following exceptions
CN115904848A (zh) Ssd自动化测试方法、装置、计算机设备及存储介质
US10481999B2 (en) Partial process recording

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