用于在计算机中执行程序的方法技术

技术编号:24218682 阅读:20 留言:0更新日期:2020-05-20 20:28
所公开的实施例涉及一种用于存储器修改的方法,所述存储器修改导致用于基本上在运行时间期间检验被测程序的测试探针。为了测试程序在特定状态下对故障的反应而注入故障或错误的能力,以及通过访问影子操作数来单独替换对常规操作数的访问的能力,允许在程序基本上实时执行的同时进行非侵入性测试,并且由此程序本身基本上不为了测试目的而变化。

Method used to execute a program in a computer

【技术实现步骤摘要】
【国外来华专利技术】用于在计算机中执行程序的方法
所公开的实施例涉及一种用于在计算机中执行程序的方法,并且具体地,涉及一种用于在执行期间操控程序以便允许测试所述程序的方法。
技术介绍
为了确保程序、特别是在具有实时要求的嵌入式系统上执行的程序的正确操作,在开发和设计这类程序的进程中,有必要执行严格的测试。当前采用的用于软件测试的工具包括取决于刺激的外部设备,以用于指示在计算机的处理单元上正执行的程序的状态。在测试进程中,响应于刺激来注入故障或错误,以测试程序在该特定状态下对故障的反应。外部测试设备(即处理单元外部和/或附近的设备)的特定问题是由于当前处理系统中的组件和信号的集成和小型化,这使得难以到达感兴趣的信息,例如高速缓冲存储器、内部寄存器和总线、以及处理单元的其它片上逻辑。由于有限的引脚计数,因此对感兴趣的内部信号进行窃听(tap)是相当复杂的。这类测试在实时系统和/或嵌入式系统的情况下特别是要求高的,所述实时系统和/或嵌入式系统包括高度集成的组件,并且其中必须在不危害功能和定时行为的情况下获得测试结果。在调试器——即用于找出错误原因的工具——的控制下运行程序并且通过设置观察点或断点来修改程序,极大地干扰了功能和定时行为,这使得调试器对于自动化测试而言是不切实际的。一般而言,用于测试目的的刺激不得损害被测程序。也就是说,过程内部刺激必须只对被测控制过程具有意图的效果,而没有任何不意图的副作用。在这个意义上,过程内部刺激必须是非侵入性的。因此,在本领域中存在对于如下的需要:在计算机中执行程序,其允许在基本上实时执行所述程序的同时进行非侵入性测试,并且由此程序本身基本上不为了测试目的而变化。进一步地,在本领域中存在对如下的需要:通过在程序的执行路径中的精确位置处注入故障来促进程序中的测试。
技术实现思路
本专利技术涉及一种用于在计算机中执行程序的方法,所述程序包括要由计算机的处理单元执行的多个指令,所述方法包括以下步骤:a)分配用于存储所述程序的至少一个操作数的第一存储器结构,每个操作数通过第一存储器结构中的相关联的第一地址而存储在第一存储器单元中;b)分配用于存储至少一个影子操作数(shadowoperand)的第二存储器结构,每个影子操作数通过第二存储器结构中的相关联的第二地址而存储在第二存储器单元中;c)通过相关联的第一地址加载用于访问第一存储器单元的所述指令中的一个;d)查询第一地址在第二存储器结构中的存在,并且响应于肯定存在,使用相关联的第二地址以用于访问所述第二存储器单元中的一个第二存储器单元,而不是第一存储器单元。本专利技术提供了一种用于协调处理器中的指令执行的技术,所述技术允许通过取而代之地访问影子操作数来单独替换对常规操作数的访问。影子操作数的概念允许将数据非侵入性地植入到程序的执行中,特别是用于将故障注入正常程序操作中和测试程序反应的目的。当出现用于通过第一地址访问第一存储器单元——其是用于读取或存储操作数的寻址位置——的常规指令时,查询指示读取或写入影子操作数的数据。在该查询递送肯定存在的情况下,专用于影子操作数的相关联的第二存储器单元、而不是用于常规操作数的第一存储器单元被用于访问。由于通过相关联的第一地址访问第一存储器单元的指令包括读取或写入操作数这两者,所以所述方法允许如下这两者:-读取影子操作数而不是常规操作数;或者;-将变量写入专用于影子操作数的第二存储器单元中,而不是将所述变量写入常规的第一存储器单元中。第一替代方案——读取影子操作数而不是常规操作数——对于向正常程序执行注入故障而言是特别有利的,例如,因为影子操作数有意地注入期望引起错误的值,以便检验程序的反应。第二替代方案——将变量写入专用于影子操作数的存储器单元中——对于将感兴趣的变量转储到第二存储器结构中而言是有利的,例如,以用于在故障注入之后分析这些变量的目的。附图说明从结合附图考虑的以下对优选实施例的描述,本专利技术的目的以及另外的优点将变得更加清楚并且容易领会,其中的附图:图1示出了根据实施例的示例性架构的框图;图2示出了根据替代实施例的示例性架构的框图;图3示出了根据实施例的示例性存储器结构;图4示出了根据实施例的用于说明可能的状态转移的状态转移图;图5示出了第一状态转移的细节;图6示出了作为前面提到的第一状态转移的结果的存储器结构中的修正;图7示出了第二状态转移的细节;图8示出了作为前面提到的第二指令的结果的存储器结构中的修正;图9示出了第三状态转移的细节;图10示出了作为前面提到的第三状态转移的结果的存储器结构中的修正;图11示出了第四状态转移的细节;图12示出了作为前面提到的第四状态转移的结果的存储器结构中的修正;图13示出了第五状态转移的细节;图14示出了作为前面提到的第五状态转移的结果的存储器结构中的修正;图15示出了第六状态转移的细节;图16示出了作为前面提到的第六状态转移的结果的存储器结构中的修正;图17示出了第七状态转移的细节;图18示出了作为前面提到的第七状态转移的结果的存储器结构中的修正;图19示出了根据替代实施例的第一变型的示例性存储器结构;图20示出了根据替代实施例的第二变型的示例性存储器结构;和;图21示出了根据替代实施例的用于说明可能的状态转移的状态转移图。具体实施方式图1示出了包括诸如微处理器或微控制器的中央处理单元CPU的示例性架构的框图。中央处理单元CPU与主存储器MEM交换——即加载或保存——数据。数据的交换可以包括存储地址ADD、数据值DAT和控制数据CTR。控制数据CTR可以包括存储在主存储器MEM中的一个或多个计算机程序的机器代码指令。指令是引起中央处理单元CPU执行特定操作的一组比特。指令的前导部分包括操作代码或操作码。操作码是指定要由中央处理单元CPU执行的操作的一组比特。例如,可以在操作码中指定诸如相加、或相减、或使程序执行分支或将值存储到存储器之类的操作。指令的剩余部分典型地为操作提供数据源、数据目的地和/或直接数据,被称为操作数。操作数可以在指令本身内、或者在存储器位置中被指定。数据值DAT可以包括操作数以及与操作数(其相关联的值可能经受改变)相关联的符号名称。地址ADD用于执行指令并且用于存储和检索数据。虽然可以由机器代码操作数来将物理地址的概念应用于对存储器位置寻址,但是在未示出的存储器管理单元或者其它存储器映射设施的控制下使用逻辑或虚拟地址,所述设施被包括在中央处理单元CPU内或者由中央处理单元CPU控制。附图中未图示的另外的单元或设备可以与具有或不具有中央处理单元CPU的主存储器MEM交换输入/输出数据IO。尽管数据的交换由分离的通道或总线(在附图中由双箭头描绘)图示,但是这类交换可以包括仅仅包括一个本文档来自技高网
...

【技术保护点】
1.一种用于在计算机中执行程序的方法,所述程序包括要由计算机的处理单元执行的多个指令,所述方法包括如下步骤:/na)分配用于存储所述程序的至少一个操作数的第一存储器结构,每个操作数通过所述第一存储器结构中的相关联的第一地址而存储在第一存储器单元中;/nb)分配用于存储至少一个影子操作数的第二存储器结构,每个影子操作数通过所述第二存储器结构中的相关联的第二地址而存储在第二存储器单元中;/nc)通过相关联的第一地址加载用于访问第一存储器单元的所述指令中的一个;/nd)查询指示读取或写入影子操作数的数据;/ne)响应于对所述数据的肯定查询,使用相关联的第二地址以用于访问所述第二存储器单元中的一个第二存储器单元,而不是所述第一存储器单元。/n

【技术特征摘要】
【国外来华专利技术】20170803 EP 17184700.71.一种用于在计算机中执行程序的方法,所述程序包括要由计算机的处理单元执行的多个指令,所述方法包括如下步骤:
a)分配用于存储所述程序的至少一个操作数的第一存储器结构,每个操作数通过所述第一存储器结构中的相关联的第一地址而存储在第一存储器单元中;
b)分配用于存储至少一个影子操作数的第二存储器结构,每个影子操作数通过所述第二存储器结构中的相关联的第二地址而存储在第二存储器单元中;
c)通过相关联的第一地址加载用于访问第一存储器单元的所述指令中的一个;
d)查询指示读取或写入影子操作数的数据;
e)响应于对所述数据的肯定查询,使用相关联的第二地址以用于访问所述第二存储器单元中的一个第二存储器单元,而不是所述第一存储器单元。


2.根据权利要求1所述的方法,其中所述第二存储器结构被分配在寄存器存储器中,所述寄存器存储器被包括在所述处理单元中或者由所述处理单元管理。


3.根据权利要求1所述的方法,其中所述第二存储器结构被分配在由所述处理单元管理的主存储器中。


4.根据权利要求1所述的方法,其中所述第二存储器结构包括用于存储修改指示符的至少一个存储器单元,所述修改指示符指示所述第一地址中的至少一个在所述第二存储器中的存在或者不存在。

【专利技术属性】
技术研发人员:L菲格J弗勒利希S罗特鲍尔
申请(专利权)人:西门子股份公司
类型:发明
国别省市:德国;DE

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1