本发明专利技术公开了一种嵌入式程序执行顺序的监控方法,该监控方法通过对嵌入式程序设定各级函数对应的局部顺序标志,在各级函数的每一条程序语句执行结束后规律性地改变对应的局部顺序标志的数值,每一层级的函数执行结束后,根据对应的局部顺序标志的数值判断是否存在语句未被执行的异常。采用本发明专利技术监控方法,能有效增加程序监控覆盖度且能够用于任意调用深度的程序执行顺序的监控。
【技术实现步骤摘要】
本专利技术属于嵌入式软件中程序执行监视
,具体涉及一种嵌入式程序执行顺序的监控方法。
技术介绍
在嵌入式产品中,一份程序往往要不间断的运行很长时间,一旦产生错误就会不断积累,直到下一次重启系统时,错误才能消除,严重的故障长期积累,甚至会导致产品的损坏。因此对程序执行的监控就显得非常重要,及时的发现错误,并采取有效的解决办法,保护产品本身,延长使用寿命,也为用户的使用提供了便利。对程序执行的监控方法很多,有的通过硬件看门狗实现监视,有的在软件代码的关键位置添加一些标志位的判断以检测程序的执行程度,还有的是对代码进行分块,仅仅对模块代码间的执行进行顺序监控。这些方式往往存在较多的故障残留,不能对每条指令语句进行监控,在函数调用层级较为复杂的嵌入式系统中,通过这些方法是无法检测到的,更无法及时处理,排除隐患。
技术实现思路
本专利技术的目的是为了解决现有技术中存在的缺陷,提供一种能够有效增加程序监控覆盖度且能够用于任意调用深度的程序执行顺序的监控方法。为了达到上述目的,本专利技术提供了一种嵌入式程序执行顺序的监控方法,通过对嵌入式程序的各层级函数设定对应的局部顺序标志,在各层级函数的每一条程序语句执行结束后规律性地改变对应的局部顺序标志的数值,每一层级的函数执行结束后,根据对应的局部顺序标志的数值判断是否存在语句未被执行的异常。本专利技术监控方法还可通过对嵌入式程序设定全局顺序标志和各级函数对应的局部顺序标志,在各级函数的每一条程序语句执行结束后规律性地改变对应的局部顺序标志的数值,每一层级的函数执行结束后,根据对应的局部顺序标志的数值判断是否存在语句未被执行的异常;当出现异常时,改变嵌入式程序的全局顺序标志,并在检查全局顺序标志判断时作为异常处理。本专利技术嵌入式程序执行顺序的监控方法,包括以下具体步骤:(1)定义嵌入式程序的全局顺序标志,并赋预设值;(2)在嵌入式程序中执行每一层级的函数入口处,判断全局顺序标志是否为预设值,若为预设值则当前程序未发生执行顺序错误,继续下一语句的执行,若不为预设值则存在执行顺序的错误,需要进入异常处理程序;(3)检查将执行的函数是否需要新定义层级函数:判断函数是否为返回的上一级函数或嵌套调用已定义的下一级函数;如否,则为需要新定义层级函数,进入下一步骤;如是,则进入步骤(5);(4)根据需要新定义层级函数,定义该层级的局部顺序标志,并赋初值;(5)执行当前函数内第一条非用于顺序监控的程序语句;判断是否有函数嵌套调用,如果无,继续下一语句的执行,如果有,返回步骤(2),每返回一次即表示在当前层级函数中嵌套了下一层级函数;(6)上一条程序语句执行结束后,对该层级函数的局部顺序标志的数值改变;(7)重复步骤4至6至当前层级函数执行完毕;(8)当前执行完成的层级函数的尾端比对该层级函数的局部顺序标志是否正确:若局部顺序标志的数值出现错误,则表示存在应该执行的语句而未被执行或者错误地重复执行多次语句,对全局顺序标志的数值改变(使之不为预设值即可),直接返回步骤(2)检查全局顺序标志,若不为预设值则进入异常处理程序;若局部顺序标志的数值未出现错误,则表示所有应该执行的语句都已经正确执行,进入下一步骤;(9)检查当前执行完函数的是否被嵌套在上一级函数,如果是,则返回上一级函数,即返回步骤(3);如果否,则表示本次监控结束。由上述步骤可知,通过步骤(5)向步骤(2)返回,可以不断增加下一层级函数嵌套,通过步骤(9)向步骤(2)返回,可以不断返回上一级函数,在步骤(2)和步骤(9)之间可以实现多次嵌套和多次向上一层级函数返回,直至最后到达最上一层级函数执行完毕。因此,本监控方法实现嵌入式程序中复杂的多层级函数顺序监控。上述全局顺序标志,用于判断整个系统中程序执行顺序是否出现异常,其预设值为任意十六进制正整数,如0x55U。局部顺序标志,用于判断当前函数内的执行顺序是否出现异常,其初值为任意正整数。通常,可以将局部顺序标志的初值一般赋为1。局部顺序标志的数值采用规律性改变,如规律性递增(加1、加2等)、或递减(减1、减2等)、或进行循环赋值。当进行循环赋值时,是指依据特定列表中的数值对顺序标志循环赋值,特定列表中的数值根据需要任意设定列表的长度,具体应用中,特定的循环赋值列表可以定义为“1,2,3,4,5,6,7,8,9,10”。按照列表中的顺序在执行每条语句后对局部顺序标志改变,若列表中的数字用完,则回到列表的第一位继续按照顺序在执行的每条语句后对局部顺序标志改变。优选方式为:在每次语句执行结束后,对局部顺序标志的数值加1,这样可以根据局部顺序标志的数值判断出执行语句数量。步骤(8)中对嵌入式程序每一层级的函数的程序语句后作上述处理,是局部顺序标志的数值改变语句覆盖到每一层级函数的每一条程序语句中。步骤(2)中的异常处理为CPU复位,或进入异常中断服务程序,或产生诊断信息用于显示或通知第三方器件和设备。本专利技术相比现有技术具有以下优点:本专利技术能够对任意层级函数的执行顺序进行监控,对程序的监控缩小至每条语句,通过在每一层级的函数内,对每条语句后进行局部顺序标志的改变,实现能够监控任意复杂系统下每一层级每条语句的执行顺序情况,该方法极大的提高了对程序语句的覆盖率,并且能够灵活的应用在复杂系统下,不受函数调用深度的限制。附图说明图1为本专利技术嵌入式程序执行顺序的监控方法流程图; 图2为应用本专利技术的一个嵌入式程序调用关系示意图;图3为图2所示嵌入式程序采用本专利技术进行程序执行顺序监控的逻辑关系图。具体实施方式 下面结合附图对本专利技术进行详细说明。如图1所示,本专利技术嵌入式程序执行顺序的监控方法具体步骤为:在函数入口处进行全局顺序标志的判断,如错误(不为预设值)则进行异常处理,正确通过后判断是否本函数是由下一层级函数返回的,若不是则定义新局部顺序标志(作为第一次定义,则该层级对应函数为最上层级函数),并对该新局部顺序标志赋初值,然后进入下一步,若是由下一层级函数返回的,直接进入下一步;接着,执行本层级函数;若本层级函数中有嵌套调用子级函数,则进入下一层级函数,仍然先判断全局顺序标志,如错误(不为预设值)则进行异常处理,正确再检查将执行的函数是需要新定义层级函数,如果否就直接执行本函数,如果是则对该子级函数定义新的局部顺序标志且赋初值,然后执行本层级函数,且执行本层级函数还有嵌套调用函数,则继续进入下一层级函数,循环上述嵌套调用函数步骤;若本层级函数未调用其他子级函数,则继续执行,每一层级函数的每一条程序语句执行结束后均对本级局部顺序标志改变,进入下一步;判断是否本层级所有函数都已经执行完,若执行完则检查本层级局部顺序标志是否有错误,错误则改变全局顺序标志数值,并在检查全局顺序标志判断时作为异常处理,正确则检查当前执行完函数的是否被嵌套在上一级函数,如果是,返回上一级函数,即返回到前面函数入口处重复上述全部步骤,如果否,则表示本次监控结束,也表明所有层级的函数顺序运行正确。如图2所示,以3个层级为例,对嵌入式程序函数层级划分和函数调用关系进行示意,由图可见,该方法能用于任意调用深度的程序系统中,定义3个层级,每个层级包含N个函数语句,每个层级都使用一个局部顺序标志,在一个层级内,通过对该层级本文档来自技高网...
【技术保护点】
一种嵌入式程序执行顺序的监控方法,其特征在于,所述监控方法通过对嵌入式程序的各层级函数设定对应的局部顺序标志,在各层级函数的每一条程序语句执行结束后规律性地改变对应的局部顺序标志的数值,每一层级的函数执行结束后,根据对应的局部顺序标志的数值判断是否存在语句未被执行的异常。
【技术特征摘要】
1.一种嵌入式程序执行顺序的监控方法,其特征在于,所述监控方法通过对嵌入式程序的各层级函数设定对应的局部顺序标志,在各层级函数的每一条程序语句执行结束后规律性地改变对应的局部顺序标志的数值,每一层级的函数执行结束后,根据对应的局部顺序标志的数值判断是否存在语句未被执行的异常。2.一种嵌入式程序执行顺序的监控方法,其特征在于:所述监控方法通过对嵌入式程序设定全局顺序标志和各层级函数对应的局部顺序标志,在各层级函数的每一条程序语句执行结束后规律性地改变对应的局部顺序标志的数值,每一层级的函数执行结束后,根据对应的局部顺序标志的数值判断是否存在语句未被执行的异常;当出现异常时,改变嵌入式程序的全局顺序标志,并在检查全局顺序标志判断时作为异常处理。3.根据权利要求1或2所述的监控方法,其特征在于,各级函数对应的局部顺序标志的数值改变为对局部顺序标志加1或进行循环赋值。4.根据权利要求2所述的监控方法,其特征在于,包括以下具体步骤:(1)定义嵌入式程序的全局顺序标志,并赋预设值;(2)在嵌入式程序中执行每一层级的函数入口处,判断全局顺序标志是否为预设值,若为预设值则当前程序未发生执行顺序错误,继续下一语句的执行,若不为预设值则存在执行顺序的错误,需要进入异常处理程序;(3)检查将执行的函数是否需要新定义层级函数:判断函数是否为返回的上一级函数或嵌套调用已定义的下一...
【专利技术属性】
技术研发人员:刘国耀,曹雨,赵剑峰,査汀,杭哲,
申请(专利权)人:南京科远自动化集团股份有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。