CN106201892B - 用于嵌入式软件的异常中断源定位检测方法 - Google Patents
用于嵌入式软件的异常中断源定位检测方法 Download PDFInfo
- Publication number
- CN106201892B CN106201892B CN201610577298.1A CN201610577298A CN106201892B CN 106201892 B CN106201892 B CN 106201892B CN 201610577298 A CN201610577298 A CN 201610577298A CN 106201892 B CN106201892 B CN 106201892B
- Authority
- CN
- China
- Prior art keywords
- software
- abnormal
- interrupt
- anomaly
- abnormal interrupt
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种用于嵌入式软件中的异常中断源定位检测方法,其包括如下步骤:S1、确定CPU内核级的异常中断,并在所述异常中断中选取软件可触发的异常中断,且在软件运行的任务中进行插桩以及设置故障代码,以使得软件在运行到插桩代码时,触发所选定的软件异常中断;S2、启动并运行软件,在触发上述软件异常中断后,对所述软件异常中断的中断信息进行捕获;S3、将上述捕获软件异常中断的中断信息发送至上位机内,上位机根据所述软件异常中断的中断信息进行触发软件异常中断的中断分析,以确定触发所述软件异常中断的中断源。本发明操作方便,能快速实现异常中断源的有效定位,提高测试异常处理的有效性,安全可靠。
Description
技术领域
本发明涉及一种检测方法,尤其是一种用于嵌入式软件中的异常中断源定位检测方法,属于中断定位检测的技术领域。
背景技术
异常属于中断中的一种特例,它是对CPU级别中出现非期望指令的一种响应,对于高安全性系统,异常中断处理往往是软件中最后的一道保护门槛,在该处理中,可以通过监测栈空间的值,将产生异常的源头给定位。在嵌入式软件中,对其处理至关重要。但在现有国内大多数嵌入式软件中,由于对异常的理解不深入,异常处理往往比较粗略,难以对软件触发的异常源进行定位,增大了异常源分析的难度。
国内现有的异常监测手段主要采用一些器件,如仿真器、逻辑分析仪、示波器等,通过在软件中采用插庄的方式,对异常进行捕捉与异常源定位,由于软件中产生异常是非常隐蔽的,采用该方法难以找到异常源,且排查过程较长。
发明内容
本发明的目的是克服现有技术中存在的不足,提供一种用于嵌入式软件的异常中断源定位检测方法,其操作方便,能快速实现异常中断源的有效定位,提高测试异常处理的有效性,安全可靠。
按照本发明提供的技术方案,一种用于嵌入式软件的异常中断源定位检测方法,所述异常中断源定位检测方法包括如下步骤:
S1、确定CPU内核级的异常中断,并在所述异常中断中选取软件可触发的异常中断,且在软件运行的任务中进行插桩以及设置故障代码,以使得软件在运行到插桩代码时,触发所选定的软件异常中断;
S2、启动并运行软件,在触发上述软件异常中断后,对所述软件异常中断的中断信息进行捕获;
S3、将上述捕获软件异常中断的中断信息发送至上位机内,上位机根据所述软件异常中断的中断信息进行触发软件异常中断的中断分析,以确定触发所述软件异常中断的中断源。
所述步骤S2具体包括如下步骤:
S2-1、对每个软件异常中断进行中断服务函数的挂接,在每个软件异常中断服务函数中调用异常信息保存功能函数以及打印功能函数;
S2-2、在异常中断服务函数中对异常中断号、异常中断恢复地址、异常产生时的状态以及异常产生时程序访问的地址数据进行获取,从而捕获软件异常中断的中断信息。
所述步骤S3中,上位机根据软件异常中断的中断分析,能得到软件异常中断的异常中断号、发生异常中断的代码位置以及进入异常中断时访问的地址数据;通过查询软件手册确定异常中断源的类型,通过map文件查找发生异常中断的代码位置对应的函数名称,以确定触发所述软件异常中断的中断源。
本发明的优点:可实现对嵌入式软件的异常中断的实时检测,并通过检测到的异常中断信息来具体定位发生异常的代码位置及机器状态,实现异常中断源的精确定位,以此来为软件开发以及软件运行过程中产生的非预期的异常中断提供一种有效的排故定位手段。同时,通过插桩以及故障代码的设置能够测试异常保护的有效性,安全可靠。
附图说明
图1为本发明的流程图。
图2为本发明具体实施例对应的软件异常中断汇报的流程图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
如图1所示:为了能快速实现异常中断源的有效定位,提高测试异常处理的有效性,本发明异常中断源定位检测方法包括如下步骤:
S1、确定CPU内核级的异常中断,并在所述异常中断中选取软件可触发的异常中断,且在软件运行的任务中进行插桩以及设置故障代码,以使得软件在运行到插桩代码时,触发所选定的软件异常中断;
本发明实施例中,对于确定的CPU而言,其对应内核级的异常中断为确定已知的,且异常中断中软件可触发的异常中断也能随之确定,具体为本技术领域人员所熟知,此处不再赘述。对于选定的软件可触发异常中断,为了能够进入所述软件异常中断,需要在软件运行的任务中进行插桩以及设置故障代码,从而使得软件在运行到插桩代码时,能够触发所选定的软件异常中断。对于确定的软件异常中断,可以采用本技术领域常用的技术手段实现插桩以及设置故障代码,具体的实现过程为本技术领域人员所熟知,此处不再赘述。
S2、启动并运行软件,在触发上述软件异常中断后,对所述软件异常中断的中断信息进行捕获;
本发明实施例中,所述步骤S2具体包括如下步骤:
S2-1、对每个软件异常中断进行中断服务函数的挂接,在每个软件异常中断服务函数中调用异常信息保存功能函数以及打印功能函数;
S2-2、在异常中断服务函数中对异常中断号、异常中断恢复地址、异常产生时的状态以及异常产生时程序访问的地址数据进行获取,从而捕获软件异常中断的中断信息。
本发明实施例中,根据具体的软件,采用本技术领域常用的技术手段实现对中断服务函数的挂接、异常信息保存功能函数的调用以及打印功能函数的调用,具体为本技术领域人员所熟知,此处不再赘述。
在异常中断服务函数中,获取异常中断号、异常中断恢复地址、异常产生时的状态以及异常产生时程序访问的地址数据。其中异常产生时的状态指异常产生时刻的器件的工作模式,主要包括了中断及异常的掩码设置、系统权限以及一些其它状态模式,用以分析并确认异常产生时的状态情况。异常产生时程序访问的地址数据帮助定位引发异常时的代码位置。在异常中断服务函数中取得上述信息后,将上述获取的内容存储到非易失性存储器内,即获取软件异常中断的终端信息。
S3、将上述捕获软件异常中断的中断信息发送至上位机内,上位机根据所述软件异常中断的中断信息进行触发软件异常中断的中断分析,以确定触发所述软件异常中断的中断源。
本发明实施例中,将获取软件异常中断的中断信息发送至上位机内的过程实现异常中断信息的汇报。具体实施时,为了实现异常中断信息向上位机的汇报,需要对CPU内的通讯功能进行初始化,并使得软件可使用CPU的资源进行数据发送。从而,在获取上述的中断信息后,将中断信息进行打包,并将打包后的数据传输至上位机;在软件中可以设置的时间延时,以保证数据量能够发送完成,具体实现与上位机之间通讯以及数据发送的过程为本技术领域人员所熟知,此处不再赘述。
上位机根据软件异常中断的中断分析,能得到软件异常中断的异常中断号、发生异常中断的代码位置以及进入异常中断时访问的地址数据;通过查询软件手册确定异常中断源的类型,通过map文件查找发生异常中断的代码位置对应的函数名称,以确定触发所述软件异常中断的中断源。具体实施时,通过上述的中断分析,可以对软件异常中断的触发精确定位到某行代码。
以嵌入式软件为例,对本发明的具体过程进行详细说明。具体地,控制软件的运行平台为PowerPC5554处理器,、具体实施过程为:
PowerPC5554处理器上共有19个内核级异常,选择IVOR13异常中断作为软件触发中断。IVOR13为TLB地址命中失败异常,对未定义的地址空间进行访问即会触发此异常中断。在软件初始化完成后,即可插桩对未定义的地址空间进行访问,例如0x50000000。
在中断初始化时,对每个异常中断进行中断服务函数的挂接,在中断服务函数中调用异常信息汇报函数reportExceptionInfo。
在软件进行初始化时,对PowerPC5554处理器上的DMA通道进行初始化,并配置串口发送。设计logMsg功能函数,用于实现与上位机通讯的功能。
在异常信息汇报函数reportExceptionInfo中获取异常中断号,对中断寄存器DEAR、ESR、SRR0、SRR1(CSRR0、CSRR1)等进行访问。
在reportExceptionInfo函数中获取异常源信息之后调用logMsg将获取到的信息通过串口发送到上位机,并在reportExceptionInfo函数最后设置相应的延迟时间,如图2所示。
通过获取上位机的数据,并对比程序编译生成的map文件,可以很容易的定位产生了IVOR13号异常,异常代码的位置在插桩函数内,异常产生时程序访问的地址为0x50000000。
本发明可实现对嵌入式软件的异常中断的实时检测,并通过检测到的异常中断信息来具体定位发生异常的代码位置及机器状态,实现异常中断源的精确定位,以此来为软件开发以及软件运行过程中产生的非预期的异常中断提供一种有效的排故定位手段。同时,通过插桩以及故障代码的设置能够测试异常保护的有效性,安全可靠。
Claims (1)
1.一种用于嵌入式软件的异常中断源定位检测方法,其特征是,所述异常中断源定位检测方法包括如下步骤:
S1、确定CPU内核级的异常中断,并在所述异常中断中选取软件可触发的异常中断,且在软件运行的任务中进行插桩以及设置故障代码,以使得软件在运行到插桩代码时,触发所选定的软件异常中断;
S2、启动并运行软件,在触发上述软件异常中断后,对所述软件异常中断的中断信息进行捕获;
S3、将上述捕获软件异常中断的中断信息发送至上位机内,上位机根据所述软件异常中断的中断信息进行触发软件异常中断的中断分析,以确定触发所述软件异常中断的中断源;
所述步骤S2具体包括如下步骤:
S2-1、对每个软件异常中断进行中断服务函数的挂接,在每个软件异常中断服务函数中调用异常信息保存功能函数以及打印功能函数;
S2-2、在异常中断服务函数中对异常中断号、异常中断恢复地址、异常产生时的状态以及异常产生时程序访问的地址数据进行获取,从而捕获软件异常中断的中断信息;
所述步骤S3中,上位机根据软件异常中断的中断分析,能得到软件异常中断的异常中断号、发生异常中断的代码位置以及进入异常中断时访问的地址数据;通过查询软件手册确定异常中断源的类型,通过map文件查找发生异常中断的代码位置对应的函数名称,以确定触发所述软件异常中断的中断源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610577298.1A CN106201892B (zh) | 2016-07-20 | 2016-07-20 | 用于嵌入式软件的异常中断源定位检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610577298.1A CN106201892B (zh) | 2016-07-20 | 2016-07-20 | 用于嵌入式软件的异常中断源定位检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106201892A CN106201892A (zh) | 2016-12-07 |
CN106201892B true CN106201892B (zh) | 2019-02-01 |
Family
ID=57491920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610577298.1A Active CN106201892B (zh) | 2016-07-20 | 2016-07-20 | 用于嵌入式软件的异常中断源定位检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106201892B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933661B (zh) * | 2017-02-27 | 2020-06-02 | 百富计算机技术(深圳)有限公司 | 一种调试嵌入式系统多中断的方法和装置 |
CN107577571B (zh) * | 2017-09-22 | 2021-04-30 | 迈普通信技术股份有限公司 | 问题定位方法及多核处理器 |
CN109189598B (zh) * | 2018-08-01 | 2022-01-25 | 百富计算机技术(深圳)有限公司 | 一种中断定位的方法、处理器及终端设备 |
CN109522206B (zh) * | 2018-09-26 | 2023-09-26 | 平安科技(深圳)有限公司 | 异常数据定位方法、装置、计算机设备及存储介质 |
CN109788352A (zh) * | 2018-12-25 | 2019-05-21 | 深圳市纽格力科技有限公司 | 一种基于mips架构的机顶盒异常确认方法和系统 |
CN109766273B (zh) * | 2018-12-27 | 2022-09-27 | 百富计算机技术(深圳)有限公司 | 死循环的定位方法、装置、计算机设备和存储介质 |
CN110058999A (zh) * | 2019-03-13 | 2019-07-26 | 平安普惠企业管理有限公司 | 电子装置、应用程序异常定位方法及存储介质 |
CN111061644B (zh) * | 2019-12-25 | 2021-04-30 | 南京大学 | 一种检测并定位异常抛出处理缺陷的方法和装置 |
CN112131098A (zh) * | 2020-08-07 | 2020-12-25 | 国家电网有限公司 | 一种用于对电能表软件进行测试的方法及系统 |
CN112363860A (zh) * | 2020-11-11 | 2021-02-12 | 中国建设银行股份有限公司 | 一种批处理作业异常中断检测方法及装置 |
CN113157519B (zh) * | 2021-03-04 | 2024-05-24 | 中国航空工业集团公司西安航空计算技术研究所 | 一种嵌入式计算机系统故障辅助定位架构及方法 |
CN112860473B (zh) * | 2021-04-27 | 2021-07-30 | 武汉深之度科技有限公司 | 程序运行错误时定位源代码的方法、装置及计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1779652A (zh) * | 2004-11-24 | 2006-05-31 | 中兴通讯股份有限公司 | 一种调试操作系统内核态程序的方法及装置 |
CN102789413A (zh) * | 2011-05-23 | 2012-11-21 | 同济大学 | 一种并行程序的调试系统及方法 |
CN103294596A (zh) * | 2013-05-23 | 2013-09-11 | 西安电子科技大学 | 一种基于程序不变量的合约式软件故障预警方法 |
CN105260312A (zh) * | 2015-10-26 | 2016-01-20 | 北京航空航天大学 | 一种多核实时系统应用数据竞争错误的调试方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101019210B1 (ko) * | 2007-04-25 | 2011-03-04 | 이화여자대학교 산학협력단 | 이뮬레이트를 활용한 임베디드 소프트웨어 테스트 장치 및그 방법 |
-
2016
- 2016-07-20 CN CN201610577298.1A patent/CN106201892B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1779652A (zh) * | 2004-11-24 | 2006-05-31 | 中兴通讯股份有限公司 | 一种调试操作系统内核态程序的方法及装置 |
CN102789413A (zh) * | 2011-05-23 | 2012-11-21 | 同济大学 | 一种并行程序的调试系统及方法 |
CN103294596A (zh) * | 2013-05-23 | 2013-09-11 | 西安电子科技大学 | 一种基于程序不变量的合约式软件故障预警方法 |
CN105260312A (zh) * | 2015-10-26 | 2016-01-20 | 北京航空航天大学 | 一种多核实时系统应用数据竞争错误的调试方法 |
Non-Patent Citations (2)
Title |
---|
ARM嵌入式系统异常调试的研究和实现;杨东;《中国优秀硕士学位论文全文数据库 信息科技辑》;20111215;正文13-33页,第4章 |
一种基于伪断点的嵌入式应用软件调试方法的研究;门松;《信息技术与信息化》;20080815;第48页,第3节 |
Also Published As
Publication number | Publication date |
---|---|
CN106201892A (zh) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201892B (zh) | 用于嵌入式软件的异常中断源定位检测方法 | |
US9483383B2 (en) | Injecting faults at select execution points of distributed applications | |
CN107066390B (zh) | 一种动态内存泄漏检测方法及系统 | |
CN104657247B (zh) | 基于jtag调试方式实现通用型故障注入系统和故障注入方法 | |
CN107483510B (zh) | 一种提高Web应用层攻击检测准确率的方法及装置 | |
CN103473162A (zh) | 一种基于软件故障注入的可靠性评测系统设计方法 | |
US20070079288A1 (en) | System and method for capturing filtered execution history of executable program code | |
CN107193732B (zh) | 一种基于路径比对的校验函数定位方法 | |
CN103699480A (zh) | 一种基于java的web动态安全漏洞检测方法 | |
CN112380542B (zh) | 基于错误场景生成的物联网固件漏洞挖掘方法及系统 | |
CN110688313B (zh) | 一种VxWorks操作系统下软件测试的故障注入方法 | |
CN104572031A (zh) | 一种测试用例的生成方法及装置 | |
EP2565790A1 (en) | Method and system for injecting simulated errors | |
CN110704314B (zh) | 一种嵌入式软件测试的故障注入方法 | |
JP2010173633A (ja) | 制御装置を調整するための方法および操作ユニット | |
CN103209173A (zh) | 一种网络协议漏洞挖掘方法 | |
TW201346574A (zh) | 使用極速掃描捕捉之週期系統管理中斷 | |
CN111859380A (zh) | Android App漏洞的零误报检测方法 | |
CN111259399A (zh) | 用于web应用的动态检测漏洞攻击的方法及系统 | |
US9176821B2 (en) | Watchpoint support system for functional simulator | |
CN104699617A (zh) | 一种游戏用自动化测试方法 | |
CN110704315B (zh) | 一种嵌入式软件测试的故障注入装置 | |
Heitmeyer | Applying practical formal methods to the specification and analysis of security properties | |
EP3234764A1 (en) | Instrumentation of graphics instructions | |
CN108388778B (zh) | Android平台融合多特征的APP反调试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: No. 104, Liangxi Road, Binhu District, Wuxi City, Jiangsu Province Patentee after: AECC AERO ENGINE CONTROL SYSTEM INSTITUTE Address before: 214063 Jiangsu province Binhu District of Wuxi City Liangxi Road No. 792 Patentee before: AVIC AVIATION MOTOR CONTROL SYSTEM INSTITUTE |