CN101802794B - 飞行器机载系统的运行软件的调试方法和实施该方法的设备 - Google Patents
飞行器机载系统的运行软件的调试方法和实施该方法的设备 Download PDFInfo
- Publication number
- CN101802794B CN101802794B CN200880106874.8A CN200880106874A CN101802794B CN 101802794 B CN101802794 B CN 101802794B CN 200880106874 A CN200880106874 A CN 200880106874A CN 101802794 B CN101802794 B CN 101802794B
- Authority
- CN
- China
- Prior art keywords
- function
- program
- interval
- mistake
- labelling
- 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.)
- Expired - Fee Related
Links
- 238000002372 labelling Methods 0.000 claims abstract description 46
- 230000002950 deficient Effects 0.000 claims abstract description 15
- 239000004744 fabric Substances 0.000 claims abstract description 4
- 238000000034 method Methods 0.000 claims description 8
- 230000000153 supplemental Effects 0.000 claims description 6
- 239000003550 marker Substances 0.000 claims description 4
- 230000000875 corresponding Effects 0.000 description 9
- 238000007689 inspection Methods 0.000 description 8
- 230000004913 activation Effects 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 2
- 230000004064 dysfunction Effects 0.000 description 2
- 241000196435 Prunus domestica subsp. insititia Species 0.000 description 1
- 239000002253 acid Substances 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001264 neutralization Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000000638 stimulation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Abstract
本发明涉及一种机载系统的运行软件的程序的调试方法,其特征在于包括以下步骤:a)通过沿着执行路径布置标记来为程序设立标记(31),以将所述执行路径分割成相邻的函数区间;b)正常执行(32)程序;c)通过标记状态矢量捕获(33)程序执行状态;d)当一个错误被检测出时:根据标记状态矢量搜索(36)有缺陷的函数区间,在该有缺陷的函数区间中反向执行(41)程序;确定并改正(42)错误。
Description
技术领域
本发明属于当系统的运行取决于在一个计算器中逻辑指令序列的执行时,这些系统的运行的安全的领域。
尤其是,本发明旨在一种应当执行逻辑指令序列的系统,尤其是具有高安全要求的系统,例如专门装载在飞行器上的电子系统,的运行软件的调试方法。
本方法使得开发人员能够搜索并改正机载系统运行软件的逻辑指令序列中的错误。本发明非排它地在航空领域以及尤其是在专用于机载系统运行软件测试执行领域中具有特别的优势。
背景技术
出于安全的考虑,用来安装在飞行器上的系统需要接受运行是否良好的检验,在检验中系统必需符合一些认证的要求。这在安装有类似系统的飞行器被授权进行飞行并甚至是投入商业服务之前进行。
安装前,这些系统要经受一些测试以检验是否符合认证权威机构制定的完整性和安全性要求。这些机载系统可以尤其是一些特殊的计算机,用来实现一些对飞行器很重要的功能,例如,领航功能。这些系统在下文中被称作计算机。
在现有系统的架构中,最常见的是每个计算机都可以用于同样性质的一种或多种应用,例如控制飞行的应用。每个计算机都包括一个硬件部分和一个软件部分。硬件部分包括至少一个中央处理单元(CPU)和至少一个输入/输出单元,计算机通过这个单元与一个计算机网络和一些外围设备等等连接。
通常在航空领域中使用的机载系统的一个主要特征是,不论其硬件还是软件的结构,都尽量避免引入执行上述系统的功能所需之外的任何装置。
因此,与普及的应用中通常碰到的系统相反的是,在航空领域,计算机不具备复杂的操作系统。另外,软件使用的语言与中央处理单元能理解的语言尽量接近,唯一可得到的输入/输出是系统运行所必需的,如来自飞行器传感器或其他部件的信息,或发送到驱动器或其他部件的信息。
这种架构的优势在于这种系统的运行非常便于控制。它并不依赖一个复杂的操作系统,复杂的操作系统的多方面的运行都要根据不可控制的参数并且否则这些系统往往成为和应用软件同样的安全示范。这种系统简单不易受攻击,因为它只包括一些执行该系统的功能严格所必需的装置。
相对地,这种系统的运行也非常难以进行观察。例如,这个系统不包括通常的人/机接口例如键盘和屏幕用来检验是否正确执行指令序列以及对执行进行调整,这就使得在软件的开发、检验和评定中难以进行一些必不可少的检验。
计算机的软件包括一个专用于所考虑的应用并保证计算机运行的软件,软件指令要与确定系统的运行的算法相符。
在系统和飞行器使用前,为了认证系统,要有一个对计算机进行生效确认的阶段。
众所周知,生效确认阶段主要在于,在计算机操作过程的每个步骤,检验计算机是否符合设立的技术规范,使得上述计算机满足系统期待的运行。
尤其对软件而言,要通过一系列的步骤来实现符合技术规范,从软件的最简单组件的检验到包括所有组件的整个完整软件安装在目标计算机中。
在第一个步骤,对可被测试的最简单的软件部件进行所谓的单元测试。在这些测试过程中,检验所述软件部件的逻辑指令即代码单独地是否都与设计要求相符。
在第二个步骤,即综合步骤,将已经分别接受检验的不同软件部件集合,形成软件部件相互作用的一个整体。对这些不同的软件部件进行整体性测试以确定这些软件部件尤其在上述部件的功能接口处是相容的。
在第三个步骤,软件部件整体安装在专门的计算机中。从而,进行一些生效确认实验以显示由集成在计算机中软件部件整体组成的软件是否符合设备技术规范,即软件能完成预期的功能,以及运行可靠安全。
为了保证软件的安全和满足认证的要求,在这个生效确认阶段,这个系统进行的整个测试同样必需能够以足够的概率得出软件与其所处的系统规定的安全要求相符。
在生效确认阶段对软件进行的不同测试可以保证软件不会出现任何一种功能不良(会对计算机的运行良好产生影响,从而影响飞行器及其安全)或者一旦出现功能不良软件能够及时控制。
然而,在生效确认阶段,尤其是当检验到异常进行研究时,不仅需要保证安装软件的计算机的输入和输出参数与期待相符,而且要保证软件内部的一些性能良好。
在这种情况下,鉴于所安装应用的专用计算机的特殊结构,不使用特殊设备和方法时通常很难观察软件的运行。
已知的第一种方法在于使用仿真器在所测试的安装有软件的计算机和一个平台之间建立一个文件分配系统。通过仿真器,一个设备能够在连接的平台上模拟计算机处理器的一个计算单元的逻辑运行。
在使用仿真器的这样一个运行模式中,计算机的处理器可以用一个检测器代替,这个检测器保证与带有处理器的仿真功能的相连接平台接口。
这样,就可以通过连接平台的自身功能,在除处理器部分外的计算机上,执行要测试的软件,观测软件的运行或一些内部运行不良,例如,输入/输出部件的输入的刺激所引起的不良,还能观测上述的输入/输出部件的输出。
这个方法存在一些不足。事实上,要测试的计算机的任何类型都需要一个特别的测试台或者测试台的至少一个专门配置。测试台是一个尤其包括一些与要测试的计算机相互连接的装置和一些模拟计算机处理器的装置以及执行测试程序的装置的组合。
既然每个处理器都需要一个特殊的仿真器,不论是仿真软件还是代替处理器的相应的检测器,那么需要增加符合计算机的性质的仿真器。
另外,一般根据仿真器进行研究的可能性比较受限。再加上必需使用与所检验的处理器的特殊机器语言意味着程序员必须是一个机器语言程序设计专家。
另外,仿真器成本昂贵,一般只会小批量生产。这类产品的生命周期也很短暂(6个月至2年),而为了延长飞机程序的周期(20年,甚至更久),在操作条件下需要对运作和检查装置进行维护(根据条例,工业反应性)。这表现为越来越难解决的废旧处理问题。
因此这种仿真器的解决方案并不具有很好的实用性,因为,除了在检查研究方面的表现欠佳,它的使用和维护成本还很高。
成本还可能增加的原因在于一般地出于安全设计理念,要使用处理器的不同模型以确保运行冗余,这就要求同样多的仿真器。
第二种排除仿真器问题的方法在于,在执行要测试的程序前,在主平台上模拟计算机的运行。在这种情况下,为了读取测试的矢量或为了记录测试的结果,要测试的软件应当访问主平台的文件。
因为要测试的软件自身并不包括类似的访问主平台的文件系统的功能,所以需要改进要测试的软件,增加这些访问功能。
为了转移这些信息,人们一般使用由模拟测试环境发出的调用系统的指令。调用系统的指令可以是,例如打开文件,写入文件或者甚至是读取文件。调用系统指令通过主平台操作系统捕获,并将其转换为主平台的系统调用。
这个第二种方法也同样存在一些不足。事实上,文件种类过多导致访问功能性的运作十分依赖主平台及其操作系统。然而,主平台不仅在空间上(世界各地分布的操作设备的情况)而且在时间上(主平台替换)的变化性是很大的,这就给这种方法的实际操作带来困难。
这些困难更加严重,还因为访问文件系统的类似功能性的运作,同样需要能够改进操作系统功能的专家的技能,因此一些进行实验的专家并不具备。
因此,这种方法成本过高,很难实施。
另外这种方法对要测试的软件具有损害性,而且为了进行这些测试而修改软件会出现软件本身运行中断的风险。
在计算器软件生效确认和检验阶段,测试的执行可揭示体现为运行软件的运行中止或者体现为一个或多个测试情况下产生出错误结果这一事实的错误。程序员这时应该在指令代码行中搜索出异常或错误,以期改正。通过如下一种执行完成此项搜索:其中执行路径的连续点的顺序与按正常执行的顺序相反。换句话说,回溯(remonter)一个代码行的序列,在其中搜索错误(即返回已经执行的但是包括一个或几个错误的代码行的序列中),然后再重新执行这个回溯序列。这种搜索称为反向执行。
这种反向执行要求,在一个指令代码行序列形成的运行软件执行路径的任一点上,程序员都了解指令代码行的进展。否则,程序员就不知道在执行路径的哪个位置出现错误。因此他也不知道应当在多少个执行代码行上进行反向执行。另外,对于机载软件,反向执行应该与正常执行使用同样的语言,即机器语言。因此对程序员来说很难理解运行软件的程序进展以回溯序列和找出错误。另外,没有任何一种反向执行的控制或追踪装置能够保证程序员知道应该回溯到有故障的序列的哪里以便找出错误或异常。
考虑到这种复杂性,这种搜索错误的方法需要几小时到几天不等的大量时间,不论在生产力还是劳动力方面,这都相对提高了调试阶段的成本。这是由于当前调试工具不提供任何有效支持反向执行的装置这一事实:涉及n个时间单位(通常是秒)或者是n步计算。与待调试的软件逻辑没有任何函数关系。若涉及到如通常机载软件情况一样的复杂逻辑软件,反向执行的效率显著减少,甚至完全消失。
发明内容
本发明旨在克服前面所述技术缺陷。为此,本发明推荐一种运行软件的调试方法,它允许开发人员从开发人员所编写的指令序列中轻易找到错误或异常的位置。为此,本发明的方法建议借助于执行路径的函数设标组织运行软件程序的执行。这一函数设标通过在程序正常执行路径的特别位置上定位(设置)标记以便将程序分割成几个函数单位来实现,这允许开发人员确定反向执行应当开始被施行的位置。该设标可以交互或自动的方式被施行。
更精确的说,本发明旨在一种机载系统的运行软件的调试方法,其特征在于包括以下步骤:
a)通过沿着执行路径布置标记来为程序设立标记,以将所述执行路径分割成相邻的函数区间;
b)正常执行程序;
c)通过标记状态矢量捕获程序执行状态;
d)当一个错误被检测出时:
根据标记状态矢量搜索有缺陷的函数区间,
在该有缺陷的函数区间中反向执行程序;
确定并改正错误。
本发明方法可同样包含一个或几个以下特征:
-在处理器例外之后,当检测到程序中止时,检测错误;
-它包括对错误所在的函数区间的细化操作;
-函数区间的细化操作包括确定输入和输出补充标记和/或中间标记;
-搜索有缺陷的函数区间的步骤以自动的方式实施;
-搜索有缺陷的函数区间的步骤由开发人员的介入以交互的方式实施;
-它包括在主机平台的结果文件中记录每个标记的位置和程序执行状况信息的步骤。
本发明同样涉及一种模拟飞行器机载系统的运行的设备,其特征在于它包含一个实施前面定义的方法的处理器。
本发明的设备可包含以下特征:
-处理器在一个测试和调试主机平台上被虚拟模拟。
本发明同样旨在一种用于飞行器的机载系统的可加载在控制单元上的运行程序,包括当程序被加载在控制单元上并在控制单元上执行时用于执行如前定义方法的指令序列。
附图说明
在阅读以下说明之后并且在研究附图之后,将更好地理解本发明。这些不作为对本发明的限制的说明。
图1是根据本发明的程序示意表示,
图2描绘本发明方法的函数图,
图3是机载系统的运行软件的调试阶段的一个测试环境的示意图表示。
具体实施方式
一个运行软件由一组程序组成。由一组写入指令序列组成的一个程序被称为指令串。根据本发明的该方法建议在机载系统运行软件的程序执行路径中方位标点以便能够根据这些方位标点确定错误或异常位于何处。
图1是该方法不同阶段的一个示意图表示。图1的每一阶段表示与本发明方法不同的一个步骤上的机载系统运行软件程序。图1的第一阶段是该程序在实施本发明方法前的一个例子。该程序,编号为20,包含20-1至20-n一整组指令串。按其出现顺序,换而言之从指令20-1至指令20-n,被执行的这些指令串构成该程序的正常执行路径。
图1的第二阶段表示对应于在标记28已被定位之后的程序20的程序21。标记28是被定位在程序特别位置的虚拟标记。这些位置最好对应于程序不同函数的开始和/或结束。标记28例如被定位在程序一个函数的一个输入点或一个输出点上。当标记被放置在程序每一函数的输入或输出上时,则标记的定位遵循函数设标被实现。
标记也可以被定位在执行路径的其他任何预定位置上,例如在数据流方面或在控制流方面的一个程序缺陷点上。标记在程序执行路径上构成方位标点。由此,当遇到一个或几个异常或错误,这表现为错误的结果、程序进展(déroulement)中止、或者一个执行死循环时,标记因此构成程序执行路径的进展重启点。
一个异常或一个错误可是函数的。在此情况下,本方法向开发人员发送一份改正所述异常或所述错误的邀请。
异常或错误也可能自然而然地造成对程序进展的控制的损失。这样一种错误例如可以是一种例如由于出现处于禁止区域的指针而造成的处理器算法的溢出。在此情况下,程序执行被中止。由于算法溢出造成的中止被称为处理器例外中止(interruption sur exceptionprocesseur)。
本发明提供的执行路径的函数设标允许检测而后改正处理器例外中止这类的错误。为此,根据本发明的设标将程序执行路径分割成相邻的函数区间。各函数逐个被执行。在本发明的一种实施方式中,一个标记被定位在每一函数的开始。每一标记包含一个对应于存储器图像的状态矢量。这一状态矢量指示在预定位置,换而言之在标记所在的位置存储器的状态,这允许随后利用状态矢量信息重新初始化存储器。
在程序进展开始时,所有标记未被激活。这些标记中每一个的状态矢量都是中性的,或未被激活的,换而言之它不包含任何信息。每次当一个函数被正常执行时,位于后续函数输入端的标记在激活的同时改变状态。标记的状态矢量则捕获该程序的一个执行状态,换而言之它捕获在此程序执行阶段系统存储器中所存储的信息。
设标可以自动方式被实现,换而言之一个标记被自动定位到每一函数区间的开始端。它也可进行交互,换而言之即开发人员在同一函数内部选择定位一些补充标记。这些补充标记可以是输入标记、输出标记和/或中间标记。设标的选择,交互的或是自动的,由开发人员自己确定。交互设标允许细化错误的搜索和改正区间,这允许减小所述区间并因此为错误的检测提供便利。
图1的第三阶段表示在所述程序以正常模式执行时对应于程序21的程序22。这一正常模式执行,被称为正常执行,对应于该程序的逻辑进展,从第一指令行20-1开始指令逐条进行。
图1的第四阶段表示程序执行状态信息和标记位置信息已被捕获时,对应于程序21的程序23。实际上,在程序正常执行时,位于一个被正常执行的函数结尾的标记被激活。该标记的状态矢量捕获或存储该程序执行阶段的存储器状态。
在程序中止时,最近被激活的标记指示程序中止发生所在的函数。这一标记的状态矢量允许找回程序在缺陷函数开始执行初期所在的执行状态。
为了状态矢量的捕获,一个正常执行的观察工具确定在标记上的通过,根据其正常出现顺序,换而言之遵从程序指令行的正常执行。当一个标记被通过,观察工具捕获所遇到的最后一个标记的状态矢量中的存储器状态并将其记录在一个数据存储器4中。
当一个错误出现时,开发人员施行一个程序反向执行以便在程序内部找到所述错误。图1的第五阶段表示在该反向执行时对应于程序23的程序24。该反向执行允许沿着与程序正常进展相反的方向回溯程序,以恢复到对应于被激活的最近标记的函数,换而言之已被捕获的状态矢量所在的最近的函数的第一指令行的执行。
换而言之,反向执行遵循标记进行以便回溯程序指令串并确定有缺陷指令串的位置。反向执行因此可以在单独一个函数区间内部施行。当一个缺陷串或错误在此函数区间内被检测出时,开发人员在此串中搜索错误或异常,随后将其改正。
得益于这些标记,开发人员能够轻易地找到有缺陷的指令串。当一个错误已被改正,开发人员可继续反向执行以检测可能存在的其他错误。实际上,用本发明的方法,执行路径被构建为使得多个错误或异常可在唯一一次程序调试阶段被检测和改正。
刚才描述的调试阶段,换而言之错误搜索和改正阶段,由图1上的程序25表示。
当一个错误被确定而且开发人员希望转到下一个或前一个错误时,它可以具有一个交互阶段。在此交互阶段中,程序26包括一个交互设标,由此开发人员可从一个函数区间跳至另一个函数区间。
图2详细描绘本发明方法的不同步骤。图2的函数图显示一个预备步骤30,其中一个测试环境控制单元检测一个调试阶段是否已被开发人员要求。
当开发人员希望施行调试时,测试环境控制单元,在步骤31中,通过在执行路径沿线定位标记以便将所述执行路径分割成相邻函数区间来对程序设标。每一个标记包含一个激活或未激活的状态矢量,如前所述。当关于程序执行状态的信息被捕获时,一个标记的状态矢量被称为激活的。因此,当越过该标记的函数已被无误执行时一个标记的一个状态矢量被激活。在相反情况下它保持未激活状态。
步骤32中,控制单元启动程序的正常执行。
步骤33中,控制单元从标记的状态矢量中捕获状态信息以便识别程序的执行状态。
步骤34中,控制单元检测是否有运行软件程序执行的中断。若程序停止,这意味着一个错误或一个异常情况已被检测出。则施行步骤35。若没有任何中断发生,正常执行继续进行且步骤32和33被重复进行。
步骤35中,确定在一个处理器例外上中止是否发生。若情况正是如此,则施行步骤36。在相反情况下,施行步骤37。在此情况下,一个消息被传送给开发人员以告知程序执行结束,或者是因为一个函数错误已被检测出,或者是因为正常执行无误终止。
本方法则继续进行步骤43,其中控制单元将标记位置记录到一个测试结果文件,以允许对执行路径的今后访问。
步骤44中,测试结果文件被关闭。步骤45是标明测试或程序执行结束的最终步骤。
若一个处理器例外在步骤35中被检测出,则在步骤36中,搜索在正常路径中未被激活的第一个标记以便从中推断缺陷串所在的函数区间。随后施行步骤38。步骤38中,开发人员可以交互方式插入输入补充标记、输出补充标记和/或中间标记以便在步骤36中确定的函数区间内细化错误搜索区间。步骤39中,从数据流或控制流中检测缺陷点。这些缺陷点允许再次细化错误周围的区间。在确定这些缺陷点之后,在步骤40中,为错误周围的缺陷区间划定范围。
应注意的是步骤38至40构成本发明的一种最佳实施方式,其中错误周围的区间被缩小以便便利反向执行时错误的搜索。
然而,本方法可预计简单地从非活动标记的检测步骤36过渡到反向执行步骤41。在此情况下,开发人员应该对错误已被检测出的整个函数施行反向执行。
步骤41中,启动允许回溯到程序的缺陷指令串被检测出的函数的反向执行。在本发明的一种实施方式下,反向执行在连续的两个标记间(区间)完成。在最常见的情况下这对应缺陷函数的开始和结束。当然可以没有任何特别限制地从一个区间跳变到另一个。在另一种实施方式下,反向执行在错误周围的一个细化区间上,换而言之仅在函数的一部分上,被施行。
步骤42中,开发人员执行错误的调试,换而言之他在缺陷函数区间中确定错误并将其改正。当调试步骤42结束时,本方法重复步骤31以便检验程序是否正确地被执行。
当控制单元在处理器例外上不再检测中断时,控制单元则向开发人员发送一个消息指出程序调试阶段结束(步骤37)。
根据本发明的方法可被用于在主机平台上虚拟模拟的一个系统测试环境中。它同样可被安装到一个借助于专用运行仿真器与一个真实机载系统相连接的工作台上。在此情况下,标记位置和/或状态矢量被记录(步骤43)到一个开发人员可存取的载体上,例如,在主机平台的结果文件中。当所有标记位置已被记录起来时,结果文件被关闭(步骤44)且测试结束(步骤45)。所有结果的检验被执行(步骤46)。当所有结果均佳,或者OK,到达指明所有这些结果都OK的最终步骤47。若不是所有结果都OK,步骤36至42被重复进行。
图3显示实施根据本发明的方法的机载系统的运行程序的测试环境中的一个控制单元1的例子。该控制单元1包含一个处理器2、一个程序存储器3、一个数据存储器4、和一个输入/输出接口5。处理器2、程序存储器3、数据存储器4和输入/输出接口5由双向通信总线6互相连接。
程序7由处理器2通过使用装入程序存储器3中的指令代码串执行。程序7旨在引导和控制机载系统的运行。程序7并非穷举地包括一个中止管理软件8、一个资料库9、一个序列发生器10、和一组应用程序11。
资料库9包含由程序7激活的控制函数集。中止管理软件8旨在不仅对处理器2的意外请求作出实时反应而且保证测试环境的多任务的共存。序列发生器10是一个使得根据不同的优先级标准以及根据可用资源来自动确定处理器2应执行的任务处理的优先级顺序的服务程序。
程序存储器3,在区域12中,包括允许建立如前所述的程序7的函数设标以及允许指明所遇错误或异常的位置以便将其改正的指令。
程序存储器3,在区域13中,包括用于捕获程序7中标记的状态矢量的指令。每一激活标记的位置及其状态矢量被记录在数据存储器4中。
程序存储器3,在区域14中,包括用于启动程序7的正常执行的指令。运行软件的程序7的执行由此展开,指令逐条进行,并逐步进行标记状态矢量的激活。当一个错误出现在一个函数中时,程序7的执行被中止。位于发现错误的函数之后的标记状态矢量不被激活。最后的被激活标记的状态矢量则构成一个指示缺陷函数换而言之包含错误的函数的方位标。
程序存储器3,在区域15中,包括用于启动反向执行的指令。反向执行允许,当错误被检测出时,回溯至包含缺陷指令的函数。开发人员来到与最后的激活状态矢量关联的标记以重新开始该函数的执行。因此,开发人员仅在缺陷函数上施行反向执行。
程序存储器3,在区域16中,包括允许操作借助于标记采集的信息的指令。这些指令允许程序7的调试。
程序存储器3,在区域17中,包括允许执行函数区间跳变的指令。换而言之,区域17的指令代码允许从一个函数区间跳变到另一个,而且程序7的进展是正常执行或反向执行。
由之前所述理解,本发明的函数设标允许有效的软件调试,因为它提供一种发现缺陷指令串以便将反向执行限制在唯一一个函数的指令中的装置。此外,它允许在唯一一个调试阶段改正多个错误。
Claims (9)
1.一种机载系统的运行软件的调试方法,其特征在于,它包括以下步骤:
a)通过沿着执行路径布置标记来为程序设立标记(31),以将所述执行路径分割成相邻的函数区间;
b)正常执行(32)程序;
c)通过标记状态矢量捕获(33)程序执行状态;
d)当一个错误被检测出时:
根据标记状态矢量搜索(36)有缺陷的函数区间;
在该有缺陷的函数区间中反向执行(41)程序;
确定并改正(42)错误,
其中,当越过标记的函数已被无错误执行时标记状态矢量被激活;在相反情况下,标记状态矢量保持未激活;
搜索有缺陷的函数区间包括搜索所述执行路径中的未激活的第一个标记;以及
状态矢量已被激活的最后的函数允许恢复错误所处的函数。
2.根据权利要求1所述的方法,其特征在于,当在处理器例外之后检测到程序中止时,错误被检测出。
3.根据权利要求1或2所述的方法,其特征在于,它包括对错误所在的函数区间的细化操作。
4.根据权利要求3所述的方法,其特征在于,函数区间的细化操作包括确定输入和输出补充标记和/或中间标记。
5.根据权利要求1或2所述的方法,其特征在于,搜索有缺陷的函数区间的步骤以自动的方式实施。
6.根据权利要求1或2所述的方法,其特征在于,搜索有缺陷的函数区间的步骤由开发人员的介入以交互的方式实施。
7.根据权利要求1或2所述的方法,其特征在于,它包括在主机平台的结果文件中记录每个标记的位置和程序执行状态信息的步骤。
8.一种机载系统的运行软件的调试设备,其特征在于,它包括:
a)被配置为通过沿着执行路径布置标记来为程序设立标记,以将所述执行路径分割成相邻的函数区间的装置;
b)被配置为正常执行程序的装置;
c)被配置为通过标记状态矢量捕获程序执行状态的装置;
d)被配置为当一个错误被检测出时:
根据标记状态矢量搜索有缺陷的函数区间;
在该有缺陷的函数区间中反向执行程序;
确定并改正错误的装置,
其中,当越过标记的函数已被无错误执行时标记状态矢量被激活;在相反情况下,标记状态矢量保持未激活;
搜索有缺陷的函数区间包括搜索所述执行路径中的未激活的第一个标记;以及
状态矢量已被激活的最后的函数允许恢复错误所处的函数。
9.根据权利要求8所述的调试设备,其特征在于,所述调试设备在测试和调试主机平台上被虚拟模拟。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0757608 | 2007-09-14 | ||
FR0757608A FR2921172B1 (fr) | 2007-09-14 | 2007-09-14 | Procede de debogage d'un logiciel de fonctionnement d'un systeme embarque a bord d'un aeronef et dispositif de mise en oeuvre |
PCT/FR2008/051649 WO2009047435A2 (fr) | 2007-09-14 | 2008-09-12 | Procédé de débogage d'un logiciel de fonctionnement d'un système embarqué à bord d'un aéronef et dispositif de mise en oeuvre |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101802794A CN101802794A (zh) | 2010-08-11 |
CN101802794B true CN101802794B (zh) | 2016-11-30 |
Family
ID=
Non-Patent Citations (1)
Title |
---|
Michael W. Shapiro.RDB: A System for Incremental Replay Debugging.《Research Report: DEPT. of Computer Science, Brown University》.1997,1-14, 33-37. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8650547B2 (en) | Method for debugging operational software of a system onboard an aircraft and device for implementing the same | |
CN104364772B (zh) | 控制一计算环境中的事务执行的方法及系统 | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
CN104335184A (zh) | 事务执行分支指示 | |
CN104335181A (zh) | 事务诊断区块 | |
CN104350468A (zh) | 非事务存储指令 | |
Monaco et al. | Functional verification methodology for the PowerPC 604 microprocessor | |
CN104380246A (zh) | 事务执行中的程序中断筛选 | |
Dandan et al. | A test-suite reduction approach to improving fault-localization effectiveness | |
AU2005239681A1 (en) | Modelling of programmable devices | |
CN107710166A (zh) | 利用符号快速错误检测的硅后验证和调试 | |
RU2451990C2 (ru) | Способ обработки объема данных, используемого во время фазы отладки функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для его осуществления | |
Mammo et al. | BugMD: Automatic mismatch diagnosis for bug triaging | |
Kasap et al. | Micro-Architectural features as soft-error markers in embedded safety-critical systems: preliminary study | |
CN109634175A (zh) | 一种控制组态程序动态验证的方法及系统 | |
CN101802794B (zh) | 飞行器机载系统的运行软件的调试方法和实施该方法的设备 | |
Hoffman | In search of dependable design | |
Berger | Debugging embedded and real-time systems: The art, science, technology, and tools of real-time system debugging | |
Wahba et al. | Expediting Design Bug Discovery in Regressions of x86 Processors Using Machine Learning | |
RU2780458C1 (ru) | Способ функционального тестирования программного обеспечения электронных устройств | |
Cheng et al. | KORAT—A platform independent test automation tool by emulating keyboard/mouse hardware signals | |
CN109933480A (zh) | 一种cos嵌入式开发盲调方法、系统、设备及存储介质 | |
Rodrigues et al. | A non-conservative software-based approach for detecting illegal CFEs caused by transient faults | |
McHenry et al. | Software life cycle management: weapons process developer | |
RU2817184C1 (ru) | Способ тестирования программного обеспечения встроенных систем управления |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161130 Termination date: 20200912 |