CN103250136A - 用于验证运行时引用的方法 - Google Patents

用于验证运行时引用的方法 Download PDF

Info

Publication number
CN103250136A
CN103250136A CN2011800578745A CN201180057874A CN103250136A CN 103250136 A CN103250136 A CN 103250136A CN 2011800578745 A CN2011800578745 A CN 2011800578745A CN 201180057874 A CN201180057874 A CN 201180057874A CN 103250136 A CN103250136 A CN 103250136A
Authority
CN
China
Prior art keywords
run time
time call
program
data
shared memory
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.)
Granted
Application number
CN2011800578745A
Other languages
English (en)
Other versions
CN103250136B (zh
Inventor
A.赖特
P.R.李
P.A.德沃尔
E.A.艾迪森
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103250136A publication Critical patent/CN103250136A/zh
Application granted granted Critical
Publication of CN103250136B publication Critical patent/CN103250136B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

用于识别在程序列表中声明的共享存储区的重叠数据结构的、冲突的所声明的无效运行时引用的方法、装置和计算机程序,该方法包括以下步骤:响应于在程序列表中识别出第一数据结构和参数列表,识别第一例程调用、以及第一例程调用的通过程序列表的顺序执行流,以便将数据写入共享存储区;响应于在程序列表中识别出第二数据结构和第二参数列表,识别第二例程调用、以及第二例程调用的通过程序列表的顺序执行流,以便将数据写入共享存储区;以及确定第二例程调用是否正试图在共享存储区中用第二例程调用的数据覆写第一例程调用的数据。

Description

用于验证运行时引用的方法
技术领域
本发明涉及应用编程的领域。具体地,本发明涉及用于验证运行时引用的方法和系统。
背景技术
诸如IBM的CICS事务处理系统的大型复杂系统包括成千上万个分立和独立的程序。每个程序包括源代码,并且,源代码提供特定类型的功能或服务。为了使用此功能,程序将向需要使用的程序、或在需要使用的程序中,进行“调用(call)”,调取(invoke)函数,针对其他类发送消息或调取方法(在面向对象的语言中)。
在特定类型的应用中,将程序分组为域。域是被设计为提供特定功能的程序集合,如存储管理或锁定。域类似于面向对象语言中的类。每个域提供允许其他类调取其服务的门。
为了使程序调用另一程序,程序包括对数据结构和参数列表的声明(引用),用来调取另一域内的门。典型地,在程序起始附近的部分内声明参数列表,其定义不同类型的参数、选项、响应和原因代码字段等等,其允许代码在运行时对其它域进行调用。这些声明包括参数列表存储区,其在对另一域进行调用之前在运行时建立,且在从域调用返回时填充,其具有来自程序内的调用的例程的各种响应和原因代码。
经常,程序被表述为“单线程的”,这意味着:在任一时刻,仅存在通过程序运行的单线程控制。这还意味着:在任意时间点,仅一组参数存储正被使用于处理对另一域的调取。
将不同的参数列表区声明为彼此重叠是通常的实践。在诸如PLX的编程语言中,例如,这通过将参数列表定义为数据结构的“联合”来实现,所有数据结构全被映射到程序的工作存储器内的同一开始点。“联合”被声明为所有参数列表区中的最大者的最大存储大小。此途径的优点在于,其简化了程序的工作存储器的映射,并减小了对于较大的程序堆栈区的需要。
分别声明每个域的参数列表区意味着:在程序运行时,每一个将被映射到计算机存储器的独立区域。这将导致较大的程序堆栈区、以及存储使用的增大。重叠参数列表区通过将存储器中的相同区域重用于每个参数列表,而避免了该不必要的额外存储需求。
重叠参数列表区是编程环境内的更佳存储使用的有效途径。然而,在使用重叠参数列表,且在源代码内不确保正确地管理它们的引用范围时,可能出现问题。
考虑程序调取对“域1”的调用的情况。程序在参数列表中建立参数,以在共享存储区中调取“域1”,并调用“域1”。当“域1”已满足其目的时,整个程序的控制流从“域1”返回到程序。在程序内嵌入逻辑,其可测试已在参数列表区内设置的、诸如来自“域1”的响应和原因代码的字段,且可基于调用的结果进行运行时判定。
然而,在测试来自调用的“域1”的结果之前,对于程序调取另一个调用(对“域2”)没有约束。程序建立用来在共享存储区中调取“域2”的参数。随后,程序调用“域2”。当程序的控制流从“域2”返回到程序时,现在,逻辑可如同之前一样测试参数列表区内的字段,并基于调用的结果来进行运行时判定。程序逻辑测试对“域2”的调用的结果,这是由于,现在,在共享存储区内保持所述结果。然而,在不同情形中,程序逻辑可能决定检查较早的对“域1”的调用的结果。然而,因为在存储器的参数列表区内不再保持此信息(这是因为,其已被“域2”的结果覆写),所以,程序逻辑正在测试为“域2”建立或由“域2”返回的参数内的字段,而不是“域1”。这可能在运行时导致逻辑错误,因为共享存储区不包含正确信息。
因此,在现有技术中,存在减轻上述问题的需要。
发明内容
从第一方面,本发明提供了一种用于识别在程序列表中声明的共享存储区的重叠数据结构的、冲突的所声明的无效运行时引用的方法,该方法包括以下步骤:响应于在程序列表中识别出参数列表的第一参数声明,识别第一运行时调用、以及所述第一运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;响应于在所述程序列表中识别出第二参数列表的第二参数声明,识别第二运行时调用、以及所述第二运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;当所述第一和第二运行时调用中的每个请求对域访问时分析所述第一和第二运行时调用的所识别的顺序执行流,并生成所述第一和第二运行时调用的元数据状态;以及分析所述元数据状态,以确定所述第一运行时调用的元数据状态是否与所述第二运行时调用的元数据状态冲突。
优选地,本发明提供一种方法,其中,所述域包括所述运行时调用需要访问的资源。
优选地,本发明提供一种方法,其中,分析元数据的步骤还包括:访问规则集,所述规则集确定所识别的执行流内运行时调用的重要性。
优选地,本发明提供一种方法,还包括:从所生成的元数据状态生成历史规则数据。
优选地,本发明提供一种方法,还包括:将所述历史规则数据存储在数据存储器中,并用所述历史规则数据更新分析组件。
优选地,本发明提供一种方法,还包括:从所述参数列表中的任一个识别是否已请求了锁定域、资源域或存储域。
优选地,本发明提供一种方法,还包括:响应于锁定域、资源域或存储域被识别,在程序的共享存储区的元数据状态中填入响应和原因代码。
优选地,本发明提供一种方法,还包括:分析所填入的响应和原因代码,以便识别对程序的共享存储区的一个或多个无效交错调用。
优选地,本发明提供一种方法,还包括:生成消息,所述消息包括一个或多个确定的冲突,用于传送给编译器、诊断工具的集成开发环境。
从另一方面,本发明提供了一种用于识别在程序列表中声明的共享存储区的重叠数据结构的、冲突的所声明的无效运行时引用的装置,所述装置包括:解析组件,响应于在程序列表中识别出参数列表的第一参数声明,识别第一运行时调用、以及所述第一运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;解析组件,响应于在所述程序列表中识别出第二参数列表的第二参数声明,识别第二运行时调用、以及所述第二运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;分析组件,当所述第一和第二运行时调用中的每个请求对域访问时分析所述第一和第二运行时调用的所识别的顺序执行流,以及映射组件,生成所述第一和第二运行时调用的元数据状态;以及分析组件,分析所述元数据状态,以确定所述第一运行时调用的元数据状态是否与所述第二运行时调用的元数据状态冲突。
优选地,本发明提供一种装置,其中,所述域包括所述运行时调用需要访问的资源。
优选地,本发明提供一种装置,其中,分析元数据步骤还包括:访问规则集,所述规则集确定所识别的执行流内的运行时调用的重要性。
优选地,本发明提供一种装置,还包括:历史组件,从所生成的元数据状态生成历史规则数据。
优选地,本发明提供一种装置,还包括:历史组件,将所述历史规则数据存储在数据存储器中,并用所述历史规则数据更新分析组件。
优选地,本发明提供一种装置,还包括:分析组件,从所述参数列表中的任一个识别是否已请求了锁定域、资源域或存储域。
优选地,本发明提供一种装置,还包括:映射组件,响应于锁定域、资源域或存储域被识别,在程序的共享存储区的元数据状态中填入响应和原因代码。
优选地,本发明提供一种装置,还包括:分析组件,分析所填入的响应和原因代码,以便识别对程序的共享存储区的一个或多个无效交错调用。
优选地,本发明提供一种装置,还包括:呈现组件,生成消息,所述消息包括一个或多个确定的冲突,用于传送给编译器、诊断工具的集成开发环境。
从另一方面,本发明提供了一种用于识别在程序列表中声明的共享存储区的重叠数据结构的、冲突的所声明的无效运行时引用的方法,该方法包括以下步骤:响应于在程序列表中识别出第一数据结构和参数列表,识别第一例程调用、以及所述第一例程调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;响应于在所述程序列表中识别出第二数据结构和第二参数列表,识别第二例程调用、以及所述第二例程调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;以及确定所述第二例程调用是否正试图在所述共享存储区中用第二例程调用的数据覆写第一例程调用的数据。
从另一方面,本发明提供了一种计算机程序,包括计算机程序代码,用来在加载到计算机系统并执行时,执行上述方法的所有步骤。
附图说明
现在,将通过参照附图,仅通过示例的方式来描述本发明的优选实施例,其中:
图1是现有技术的数据处理系统,其中,可实现本发明的优选实施例;
图2是根据本发明的优选实施例的框图,其绘出了与编译器应用、集成开发环境或编辑器接口的验证组件;
图3是根据本发明的优选实施例的框图,其绘出了包括多个程序的程序列表;
图4是示出现有技术中已知的参数列表的框图;
图5是根据本发明的优选实施例的框图,其示出了图2的验证组件的子组件;以及
图6和7是根据本发明的优选实施例的框图,其示出了验证组件的处理步骤。
具体实施方式
数据处理系统100包括中央处理单元101,其具有存储器102(RAM和ROM)形式的主存储器。存储器102存储在应用上操作或由应用创建的应用信息和数据。所述信息包括用于数据处理系统100的操作系统代码、以及在计算机系统100上运行的应用的应用代码。次级存储器包括光盘存储器103、以及磁盘存储器104。数据和应用信息也可从次级存储器存储和访问。
数据处理系统100包括网络连接部件105,用于将数据处理系统100接口到网络。数据处理系统100还可具有其它外部源通信部件,如传真调制解调器或电话连接。
中央处理单元101包括例如键盘106、鼠标107、语音输入108、以及扫描仪109的形式的输入,用于输入文本、图像、图片等。从中央处理单元101的输出可包括显示部件110、打印机111、声音输出112、视频输出113等。
参照图2、并根据本发明的优选实施例,示出了用于验证运行时引用的验证组件215。验证组件215可操作用于与编译器应用200、编辑器应用205和/或集成开发环境(IDE)210接口。在优选实施例中,验证组件215是可与编译器200、编辑器205或IDE210一起操作的插件应用。可替换地,本发明的验证组件215可被集成到编译器200、编辑器205或IDE210中。
可通过编辑器应用205、编译器应用200或IDE210中的命令来启动验证组件215。为了清楚起见,将这些组件命名为“启动应用”。
通过从启动应用中的任一个接收分析源代码或编译的代码列表(程序列表)的请求,来触发验证组件215。
本领域的技术人员将理解,程序列表可包括以特定编程语言编写的源代码、编译器从源代码生成(在链接之前)的目标代码,目标代码一般包括一个或多个数据结构,其包括由程序源代码引用的字段。
本领域的技术人员还将认识到,程序列表也可仅包括源代码或上述的任意组合。
通过参照图3和图4,示出了程序列表300。程序列表包括与多个程序关联的调用和声明,所述程序即“程序A”305、“程序B”310、“程序C”315。程序305、310、315中的每个一起操作,以便提供应用335的功能。应用335包括程序逻辑330,其使得例程能够被执行,并使其他程序能以特定次序被调用。例如,程序逻辑330可指示先执行“程序A”305,然后是“程序B”310和“程序C”315。然而,本领域的技术人员将认识到,程序305、310、315执行的任何次序都是可能的,取决于应用所需的功能。
应用335包括多个声明320,并且,在这些声明中,声明并在对其他程序305、310、315进行调用之前在运行时建立(set up)参数列表。图4示出了参数列表400的联合的示例。
利用名称“xxyy_parms”405声明存储器的重叠部分(共享存储器)。此声明内是5个参数列表的联合410,其反映包含这些声明的应用335可利用5个不同的域调用。参数列表的示例是“apex_parms”、“lmlm_parms”、“meme_parms”等等。这些参数列表中的每个将包括响应和应答字段325,如“apex_response”、“apex_reason”、“lmlm_response”、“lmlm_reason”、“meme_response”、“meme_reason”等,以便测试各种响应,从而产生特定的运行时判定。
执行验证,以便验证这样的实例,在所述实例中,在联合存储区的内容已被对另一程序的交错(interleaving)调用而无效之后,正使用程序的工作存储器堆栈区内的相同参数列表区,进行对联合存储区中的数据结构的引用。
考虑与对锁定域和存储域的交错程序调用相关的以下情形,其与调用“程序A”305、“程序B”310或“程序C”315类似。当应用335需要从存储域获取某个存储(其在计算方面耗费可观的时间量)时,应用335不能跨越调用保持资源锁定,这是由于,这可能严重地影响系统性能。因此,程序逻辑调用锁定域,以释放锁定(其建立“lmlm_parms”,并产生调用)。锁定域将响应和原因代码填入参数列表区400,准备由调用应用335检查。
程序逻辑330测试对锁定域的调用的结果。如果成功,则程序逻辑330调用存储域,以获取存储。程序逻辑330建立“smmc_parms”,并产生调用。存储域获取存储,并将响应和原因代码325填入参数列表区400,准备由调用应用335检查。
程序逻辑330需要重新获取其在调用前后为了获取存储必须释放的资源锁定。其建立“lmlm_parms”,并随后调用锁定域。锁定域重新获取锁定,并将响应和原因代码填入参数列表区,准备由调用程序检查。在进行其时,“smmc_parms”被覆盖,并且,数据现在丢失。这包括来自存储域调用的响应和原因代码。
当将控制返回到应用335,程序逻辑330现在检查来自存储域的响应和原因代码325。然而,由于参数列表存储已被对锁定域的调用重用,此信息已丢失。现在,可能出现不可预测的运行时结果,这是因为,存储区和程序行为不再被定义。
为了检测和避免此问题,根据本发明的优选实施例,验证组件215检测并验证运行时引用,以确定在程序逻辑330的流中是否存在错误使得共享存储器的区域被不正确的存储引用覆盖。验证组件215包括多个子组件。它们是接收组件500、解析组件505、映射组件510、分析组件530、呈现组件515、历史组件520、以及元数据存储区525。
下面,通过示例的方式,并通过参照图5、6和7来表示验证组件215的子组件根据本发明的优选实施例一起操作的处理。
接收组件500从应用接收程序列表300。接收组件500将接收的程序列表传送到解析组件505,用于进一步的处理(步骤600)。
解析组件505扫描程序列表,以便识别被识别为彼此重叠的一个或多个参数声明,并还识别程序列表内对参数列表内的每个数据字段进行引用的每个运行时调用。解析组件505将识别的参数声明以及每个识别的数据字段传递到映射组件510,用于进一步的处理(步骤605)。
映射组件510分析接收的数据,并映射每个识别的调用与其在源代码内的执行顺序流,作为元数据状态。元数据被存储在元数据存储区525中。映射组件510还映射对参数列表字段的引用作为元数据(步骤610)。根据图4的示例,随着程序逻辑流被解析并呈现给映射组件510,会发生下面的映射。
在前面给出的示例中,当程序逻辑建立用于对锁定域调用的参数列表并发出调用时,由于已请求对锁定域的调用的事实,程序逻辑注意到参数列表存储当前“在使用中”。
每次程序逻辑识别出对域的调用是“在使用中”时,这被设置为元数据中的状态,示例(示例1)如下:
示例1
设置lmlm_parms_in_scope为真(TRUE)
设置lock_domain_being_called为真
元数据还可包括其它数据,其将数据与上面的到程序列表内特定的源代码行、以及到它们在程序逻辑内的执行点(如在调用的子例程或函数内)的状态变换相关联。
继续解析程序列表300。由于锁定域响应和原因字段已被测试且定义了结果代码路径的事实,映射组件510注意到参数列表存储不再被关注。程序逻辑检查来自锁定域的响应和原因字段,并且,如果已出现错误则退出程序,如下(示例2):
示例2
设置lock_domain_being_called为假(FALSE)
设置lmlm_parms_in_scope为假(FALSE)
继续解析程序列表。程序逻辑调用存储域,以获取存储。其建立“smmc_parms”,并进行调用。存储域获取存储锁定,并将其响应和原因代码填入参数列表区,准备由调用程序检查。
映射组件510通过更新其用于程序的共享参数列表存储的状态的元数据以及其对存储域的调用来表示这个,如下(示例3):
示例3
设置smmc_parms_in_scope为真
设置storage_domain_being_called为真
设置storage_domain_being_called为真
设置smmc_parms_in_scope为假
现在,程序逻辑330需要重新获取资源锁定,因此,其建立“lmlm_parms”参数信息,并进行对锁定域的调用。重新获取锁定,并且,锁定域将响应和原因代码填入参数列表区,准备由调用应用检查。
在进行其时,“smmc_parms”被覆盖,且其数据现在丢失。这包括来自存储域调用的响应和原因代码。
映射组件510通过更新其用于程序的共享参数列表存储的状态的元数据以及其对锁定域的调用来表示这个,如下(示例4):
示例4
设置lmlm_parms_in_scope为真
设置lock_domain_being_called为真
设置lock_domain_being_called为假
现在,程序逻辑330可能错误地检查到来自之前进行的存储域调用的响应和原因代码。然而,此信息已丢失,因为参数列表存储已被对锁定域的调用重用。当本发明解析测试smmc_parm字段的指令时,映射组件510现在如下记录事实(示例5):
示例5
设置invalid_reference_to_smmc_parms为真
解析程序逻辑330的其余部分,并且,在适当时,映射组件510创建附加元数据,以反映应用的域调用的其它使用以及它们的参数列表内容。
在已解析了整个程序列表之后,已完成映射并创建了元数据的映射组件510将控制递交到分析组件530。
分析组件530访问元数据,并分析通过程序列表300的映射创建的元数据。分析组件530通过引用程序逻辑和元数据所描述的调用的状态,确定哪些调用正对不再在其特定范围内的参数列表字段无效地进行引用(步骤615)。
通过上面的示例1至5,分析组件可注意到:在对锁定域的交错调用已重用共享参数列表区之后,应用已对“smmc_parms”的内容进行了引用。
分析组件530通过分析描述程序逻辑内的事件流的元数据、以及在解析应用时设置的各种状态标志(布尔型和其它)来确定这一点。在上面的示例中,它们可包括被设置为假(false)的标志“smmc_parms_in_scope”、以及被设置为真(ture)的“invalid_reference_to_smmc_parms”。这会确认已对不再包含“smmc_parms”信息的共享存储进行了引用。“lmlm_parms_in_scope”和“lock_domain_being_called”布尔型设置的内容确认已使共享参数列表存储的内容无效的交错调用的类型。
元数据还包括伴随数据,其反映程序列表内的源指令语句号、及其在程序控制流内的执行次序。分析组件530分析此信息,以便识别一个或多个无效调用,其中,数据在共享存储区中已被覆盖。
分析组件530编译结果集,并将结果集传递到呈现组件515,其生成与分析组件530识别的问题相适应的警告和/或错误消息(步骤620)。例如且参照示例6,如果检测到“smmc_response”和“smmc_reason”字段的无效引用,则向呈现组件515通知这一点以及与程序自身相关的指令上下文。用于这样的情形的消息的示例可为:
示例6
在yy/mm/dd,hh/mm/ss执行的目标程序ABCD的分析。
对检测到的以下无效字段引用:
字段:smmc_response.序列号:1234.子例程get_stg。
字段:smmc_reason.序列号1237.子例程get_stg。
字段被之前对锁定管理器组件的调用无效。
可将所述消息呈现为适于它们的输出目的地,如在编辑屏幕或编译器列表内的行输出,或IDE中的窗格内的诊断。
在另一个实施例中,分析组件530访问历史组件520捕捉的历史元数据用于将来使用(步骤700和705)。历史组件520连续捕捉涉及对其它程序的编程调用和参数列表引用的组合的错误情形。当已完成了映射处理时,错误情形是分析组件530识别的错误情形(步骤710)。捕捉的历史数据允许涉及编程调用和参数列表引用的组合的典型错误情形的捕捉。这样的历史数据可被分析组件530在分析用于将来的程序列表的元数据时使用。
分析组件530可检查被分析的元数据所反映的状态变换内的这样的组合的相似性,并查找在被分析的程序中可潜在看到这样的错误的情形,例如,如果产生了可能影响域调用的区域附近的程序逻辑内的事件流的逻辑改变,或在域调用与其结果的验证之间进行了特定指令或子例程调取的插入。例如,在正被分析的程序内当前不存在对解锁和锁定资源的调用的情况下,分析组件530随后可通过生成适当的消息数据来警告这一点(步骤715),如下(示例7):
示例7
yy/mm/dd,hh/mm/ss执行的目标程序WXYZ的分析。
对检测到的以下字段引用:
字段:smmc_response.序列号:5678.子例程get_stg。
字段:smmc_reason.序列号5679.子例程get_stg。
“请注意在该获得存储操作前后添加对解锁和锁定资源的调用的影响。在联合中声明‘smmc’和‘Imlm’参数列表区,所以其彼此重叠。对‘smmc_response’和‘smmc_reason’字段的引用将由于对锁定管理器组件的先前调用的添加而变为无效,这是要执行的典型操作。”
本发明可采用完全硬件实施例、完全软件实施例、或包含硬件和软件元素的实施例的形式。在优选实施例中,以软件方式实现本发明,其包括但不限于固件、驻留软件、微码等。
本发明可采用可从提供程序代码的计算机可用或计算机可读介质访问的计算机程序产品的形式,以由计算机或任意指令执行系统使用或与其结合。为了此描述的目的,计算机可用或计算机可读介质可为可包含、存储、传递、传播或传输程序的任何装置,以由指令执行系统、装置或设备使用或与其结合使用。
介质可为电、磁、光、电磁、红外或半导体系统(或装置或设备)、或传播介质。计算机可读介质的示例包括半导体或固态存储器、磁带、可移除计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、固态磁盘、以及光盘。光盘的当前示例包括CD-ROM、CD-R/W和DVD。
可对前面的内容作出改进和修改,而不会背离本发明的范围。

Claims (19)

1.一种用于识别在程序列表中声明的共享存储区的重叠数据结构的、冲突的所声明的无效运行时引用的方法,该方法包括以下步骤:
响应于在程序列表中识别出参数列表的第一参数声明,识别第一运行时调用、以及所述第一运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;
响应于在所述程序列表中识别出第二参数列表的第二参数声明,识别第二运行时调用、以及所述第二运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;
当所述第一和第二运行时调用中的每个请求对域访问时分析所述第一和第二运行时调用的所识别的顺序执行流,并生成所述第一和第二运行时调用的元数据状态;以及
分析所述元数据状态,以确定所述第一运行时调用的元数据状态是否与所述第二运行时调用的元数据状态冲突。
2.根据权利要求1的方法,其中,所述域包括所述运行时调用需要访问的资源。
3.根据权利要求1的方法,其中,分析元数据的步骤还包括:访问规则集,所述规则集确定所识别的执行流内运行时调用的重要性。
4.根据权利要求1的方法,还包括:从所生成的元数据状态生成历史规则数据。
5.根据权利要求4的方法,还包括:将所述历史规则数据存储在数据存储器中,并用所述历史规则数据更新分析组件。
6.根据权利要求1或2的方法,还包括:从所述参数列表中的任一个识别是否已请求了锁定域、资源域或存储域。
7.根据权利要求6的方法,还包括:响应于锁定域、资源域或存储域被识别,在程序的共享存储区的元数据状态中填入响应和原因代码。
8.根据任一前述权利要求的方法,还包括:分析所填入的响应和原因代码,以便识别对程序的共享存储区的一个或多个无效交错调用。
9.根据权利要求1的方法,还包括:生成消息,所述消息包括一个或多个确定的冲突,用于传送给编译器、诊断工具的集成开发环境。
10.一种用于识别在程序列表中声明的共享存储区的重叠数据结构的、冲突的所声明的无效运行时引用的装置,所述装置包括:
解析组件,响应于在程序列表中识别出参数列表的第一参数声明,识别第一运行时调用、以及所述第一运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;
解析组件,响应于在所述程序列表中识别出第二参数列表的第二参数声明,识别第二运行时调用、以及所述第二运行时调用的通过所述程序列表的顺序执行流,以便将数据写入所述共享存储区;
分析组件,当所述第一和第二运行时调用中的每个请求对域访问时分析所述第一和第二运行时调用的所识别的顺序执行流,以及映射组件,生成所述第一和第二运行时调用的元数据状态;以及
分析组件,分析所述元数据状态,以确定所述第一运行时调用的元数据状态是否与所述第二运行时调用的元数据状态冲突。
11.根据权利要求10的装置,其中,所述域包括所述运行时调用需要访问的资源。
12.根据权利要求10的装置,其中,分析元数据步骤还包括:访问规则集,所述规则集确定所识别的执行流内的运行时调用的重要性。
13.根据权利要求10的装置,还包括:历史组件,从所生成的元数据状态生成历史规则数据。
14.根据权利要求13的装置,还包括:历史组件,将所述历史规则数据存储在数据存储器中,并用所述历史规则数据更新分析组件。
15.根据权利要求10或11的装置,还包括:分析组件,从所述参数列表中的任一个识别是否已请求了锁定域、资源域或存储域。
16.根据权利要求15的装置,还包括:映射组件,响应于锁定域、资源域或存储域被识别,在程序的共享存储区的元数据状态中填入响应和原因代码。
17.根据任一前述权利要求的装置,还包括:分析组件,分析所填入的响应和原因代码,以便识别对程序的共享存储区的一个或多个无效交错调用。
18.根据权利要求10的装置,还包括:呈现组件,生成消息,所述消息包括一个或多个确定的冲突,用于传送给编译器、诊断工具的集成开发环境。
19.一种计算机程序,包括计算机程序代码,用来在加载到计算机系统并执行时,执行根据权利要求1至9中的任一项的方法的所有步骤。
CN201180057874.5A 2010-12-16 2011-10-25 用于验证运行时引用的方法 Expired - Fee Related CN103250136B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10195481 2010-12-16
EP10195481.6 2010-12-16
PCT/EP2011/068680 WO2012079818A1 (en) 2010-12-16 2011-10-25 A method for validating run-time references

Publications (2)

Publication Number Publication Date
CN103250136A true CN103250136A (zh) 2013-08-14
CN103250136B CN103250136B (zh) 2016-03-16

Family

ID=44897743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180057874.5A Expired - Fee Related CN103250136B (zh) 2010-12-16 2011-10-25 用于验证运行时引用的方法

Country Status (5)

Country Link
US (1) US8739136B2 (zh)
CN (1) CN103250136B (zh)
DE (1) DE112011103505T5 (zh)
GB (1) GB2500349A (zh)
WO (1) WO2012079818A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488570A (zh) * 2013-09-29 2014-01-01 西安电子科技大学 一种嵌入式软件的可组合信息流验证系统及方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5901668B2 (ja) * 2013-02-28 2016-04-13 タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited 静的解析中に発生した警告をグループ化するシステムおよび方法
GB2527832B (en) * 2014-07-03 2016-06-01 Ibm Overwrite detection for control blocks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535390A (en) * 1994-07-22 1996-07-09 Hildebrandt; Thomas H. Method for reusing temporaries and reclaiming shared memory
US20050193217A1 (en) * 2004-03-01 2005-09-01 Case Lawrence L. Autonomous memory checker for runtime security assurance and method therefore

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909580A (en) * 1996-02-08 1999-06-01 Inprise Corporation Development system and methods with direct compiler support for detecting invalid use and management of resources and memory at runtime
US5764883A (en) * 1996-03-28 1998-06-09 Hewlett-Packard Co. System and method for checking for dynamic resource misuse in a computer program
US6968438B1 (en) * 1999-09-20 2005-11-22 Texas Instruments Incorporated Application programming interface with inverted memory protocol for embedded software systems
US20030188040A1 (en) * 2002-03-29 2003-10-02 International Business Machines Corporation Software agent hosting environment with extensible middleware integration
US7222332B2 (en) * 2002-10-24 2007-05-22 International Business Machines Corporation Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture
US7155703B2 (en) * 2003-07-18 2006-12-26 Microsoft Corporation Virtual method protection
US7174432B2 (en) * 2003-08-19 2007-02-06 Nvidia Corporation Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
FR2864658B1 (fr) * 2003-12-30 2006-02-24 Trusted Logic Controle d'acces aux donnees par verification dynamique des references licites
US7930491B1 (en) * 2004-04-19 2011-04-19 Cisco Technology, Inc. Memory corruption detection system and method using contingency analysis regulation
US8157647B2 (en) * 2007-10-17 2012-04-17 Igt Tournament manager for use in casino gaming system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535390A (en) * 1994-07-22 1996-07-09 Hildebrandt; Thomas H. Method for reusing temporaries and reclaiming shared memory
US20050193217A1 (en) * 2004-03-01 2005-09-01 Case Lawrence L. Autonomous memory checker for runtime security assurance and method therefore
CN1926518A (zh) * 2004-03-01 2007-03-07 飞思卡尔半导体公司 运行时间安全保证的自动存储器检测器及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IP.COM: "《Http://priorartdatabase.com/IPCOM/000194941》", 14 April 2010 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488570A (zh) * 2013-09-29 2014-01-01 西安电子科技大学 一种嵌入式软件的可组合信息流验证系统及方法
CN103488570B (zh) * 2013-09-29 2016-09-28 西安电子科技大学 一种嵌入式软件的可组合信息流验证系统及方法

Also Published As

Publication number Publication date
GB201311746D0 (en) 2013-08-14
WO2012079818A1 (en) 2012-06-21
US20120159457A1 (en) 2012-06-21
DE112011103505T5 (de) 2013-12-05
US8739136B2 (en) 2014-05-27
CN103250136B (zh) 2016-03-16
GB2500349A (en) 2013-09-18

Similar Documents

Publication Publication Date Title
US8839201B2 (en) Capturing test data associated with error conditions in software item testing
US10067858B2 (en) Cloud-based software testing
US9292416B2 (en) Software development kit testing
US9898387B2 (en) Development tools for logging and analyzing software bugs
US8209564B2 (en) Systems and methods for initiating software repairs in conjunction with software package updates
US8839202B2 (en) Test environment managed within tests
US9684587B2 (en) Test creation with execution
US8813030B2 (en) Detecting plug-in and fragment issues with software products
US9069902B2 (en) Software test automation
CN106325970A (zh) 编译方法和编译系统
US8276118B2 (en) Depicting changes to structures in an integrated development environment
US11307975B2 (en) Machine code analysis for identifying software defects
US20140109058A1 (en) Test language interpreter
US11263113B2 (en) Cloud application to automatically detect and solve issues in a set of code base changes using reinforcement learning and rule-based learning
US8924932B2 (en) Using stack data and source code to rank program changes
EP1688829A2 (en) Baseline arechitecture monitors application for distributed systems
US11301221B2 (en) Rapid code compiling system
Santana et al. RAIDE: a tool for Assertion Roulette and Duplicate Assert identification and refactoring
US10387294B2 (en) Altering a test
US9292422B2 (en) Scheduled software item testing
CN103250136A (zh) 用于验证运行时引用的方法
Abate et al. Learning from the future of component repositories
Di Ruscio et al. Simulating upgrades of complex systems: The case of Free and Open Source Software
JP7348492B2 (ja) 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法
EP1868099B1 (en) Bug management tool

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160316

Termination date: 20201025

CF01 Termination of patent right due to non-payment of annual fee