程序检测方法及装置制造方法及图纸

技术编号:33996747 阅读:13 留言:0更新日期:2022-07-02 11:04
本申请提供一种程序检测方法及装置,能够帮助用户快速完成程序运行在弱内存环境上的检查,可以提高程序的检测效率,可应用于程序检测中。该方法包括:接收用户提供的程序,根据查询参数和程序获得程序运行在弱内存环境上的结果。其中,查询参数用于指示程序的两条操作发生重排序的最大间隔。作发生重排序的最大间隔。作发生重排序的最大间隔。

【技术实现步骤摘要】
程序检测方法及装置


[0001]本申请涉及通信领域,尤其涉及一种程序检测方法及装置。

技术介绍

[0002]强内存模型(strong memory model)和弱内存模型(weakly ordered memory model)为两种存储模型。其中,强内存模型描述的是每一条指令都隐含获取(acquire)和释放(release)语义,获取语义可用于阻止读获取(read

acquire)和它之后的任何读写操作的乱序,释放语义可用于阻止写释放(write

release)和它之前的任何读写操作的乱序,即一个核(core)对内存进行的写操作序列可以被中央处理器(central processing unit,CPU)的其他核以相同的次序观察到。弱内存模型描述的是在一个独立的线程内,任意对内存的读写操作都可以与其它读写操作交换顺序,而不改变该线程的行为。
[0003]由于弱内存模型的软件生态环境的滞后,可能会导致基于强内存模型平台开发的程序,在移植到弱内存模型平台后,出现程序崩溃、重启或计算结果错误等异常现象。从而需要通过有经验的程序开发人员对程序进行反复测试、调试,来分析程序运行在弱内存模型平台的是否会发生异常。然而,上述程序崩溃、重启或计算结果错误等异常现象的复现概率低,受限于测试用例和测试环境,复现问题的成本高,并且对测试人员的专业能力要求很高。

技术实现思路

[0004]本申请实施例提供一种程序检测方法及装置,能够帮助用户快速完成程序运行在弱内存模型平台上的检查,可以提高程序的检测效率。
[0005]为达到上述目的,本申请采用如下技术方案:
[0006]第一方面,提供一种程序检测方法。该程序检测方法包括:接收用户提供的程序,根据查询参数和程序,获得程序运行在弱内存环境上的结果。其中,查询参数用于指示程序的两条操作发生重排序的最大间隔。
[0007]基于第一方面所述的程序检测方法,程序检测装置接收用户提供的程序,根据用于指示程序的两条操作发生重排序的最大间隔的查询参数和程序,便可获得程序运行在弱内存环境上的结果,能够帮助用户快速完成程序运行在弱内存环境上的检查,可以提高程序的检测效率,对用户的专业能力要求低。
[0008]在一种可能的设计方案中,上述根据查询参数和程序,获得程序运行在弱内存环境上的结果,可以包括:根据查询参数、程序的第一线程中的第一操作与第一线程中的第二操作的间隔、和程序的第二线程中的第三操作与第二线程中的第四操作的间隔,获得程序运行在弱内存环境上的结果。可选地,第一操作和第三操作可以为对同一变量进行的一对读写操作,第二操作和第四操作可以为对同一变量进行的一对读写操作,第一操作和第二操作可以为对不同变量进行的操作,第三操作和第四操作可以为对不同变量进行的操作。如此,不需要用户对程序进行测试,可以提高程序的检测效率。
[0009]在一种可能的设计方式中,第一方面提供的程序检测方法,还可以包括:采用内存读写模式查询规则,对程序的第一线程中的第一操作、第一线程中的第二操作、程序的第二线程中的第三操作和第二线程中的第四操作进行检测,获得程序运行在弱内存环境上的结果。
[0010]可选地,内存读写模式查询规则可以是根据查询参数确定的,内存读写模式查询规则可用于确定第一线程和第二线程在时间上是否发生重叠。如此,若程序满足内存读写模式查询规则,则结果为错误,如容易产生弱内存序问题;若不满足内存读写模式查询规则,则结果为正确,如在弱内存模型平台运行结果正确,不需要用户对程序进行反复测试,可以快速获得程序运行在弱内存环境的结果。
[0011]可选地,内存读写模式查询规则可以包括读读、写写乱序查询规则,和/或,读写、写读乱序查询规则。如此,可以检查包括至少两个线程,且一个线程包括读读操作和另一个线程包括写写操作的程序在弱内存环境上的运行结果,和/或,可以检查包括至少两个线程,且一个线程包括读写操作和另一个线程包括写读操作的程序在弱内存环境上的运行结果。
[0012]在一种可能的设计方式中,查询参数可以是用户确定的,查询参数可以包括片内写操作延迟。可选地,查询参数还可以包括跨NUMA写操作延迟和/或跨NUMA读操作延迟。如此,可以根据用户输入的查询参数进行内存读写模式查询。
[0013]在一种可能的设计方式中,第一方面提供的程序检测方法,还可以包括:获取查询参数对应的数值。其中,查询参数对应的数值可以包括片内写操作延迟对应的值。可选地,查询参数对应的数值还可以包括跨NUMA写操作延迟对应的值和/或跨NUMA读操作延迟对应的值。
[0014]可选地,弱内存环境可以为非统一内存访问架构(non

Uniform memory access architecture,NUMA)的运行设备对应的运行环境。
[0015]在一种可能的设计方式中,第一方面提供的程序检测方法,还可以包括:向用户提供结果。其中,结果可以包括修改建议。如此,用户可根据修改建议手动修改程序,从而可以帮助用户快速定位程序中导致程序发生错误的位置,快速完成程序的修改,提高程序的修改效率。
[0016]可选地,结果可以包括:正确。或者,结果可以包括错误和/或修改建议。
[0017]可选地,修改建议可以包括需要修改的代码的位置信息,例如代码行号和/或程序文件名,修改建议可用于程序检测装置修改程序或用于用户手动修改程序。
[0018]在一种可能的设计方式中,第一方面提供的程序检测方法,还可以包括:响应于用户的确定指示,根据修改建议修改程序。如此,可以直接帮助用户完成程序的修改,进一步提高程序的修改效率。
[0019]第二方面,提供一种程序检测装置。该程序检测装置包括:接收单元和获取单元。其中,接收单元,用于接收用户提供的程序;获取单元,用于根据查询参数和程序,获得程序运行在弱内存环境上的结果。其中,查询参数用于指示程序的两条操作发生重排序的最大间隔。
[0020]在一种可能的设计方式中,获取单元,还用于根据查询参数、程序的第一线程中的第一操作与第一线程中的第二操作的间隔、和程序的第二线程中的第三操作与第二线程中
的第四操作的间隔,获得程序运行在弱内存环境上的结果。可选地,第一操作和第三操作为对同一变量进行的一对读写操作,第二操作和第四操作为对同一变量进行的一对读写操作,第一操作和第二操作为对不同变量进行的操作,第三操作和第四操作为对不同变量进行的操作。
[0021]在一种可能的设计方式中,获取单元,还用于采用内存读写模式查询规则,对程序的第一线程中的第一操作、第一线程中的第二操作、程序的第二线程中的第三操作和第二线程中的第四操作进行检测,获得程序运行在弱内存环境上的结果。
[0022]可选地,内存读写模式查询规则可以是根据查询参数确定的,内存读写模式查询规则可用于确定第一线程和第二线程在时间上是否发生重叠。
[0023]在一种可能的设计方式中,内存读写模式查询规则本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序检测方法,其特征在于,包括:接收用户提供的程序;根据查询参数和所述程序,获得所述程序运行在弱内存环境上的结果;其中,所述查询参数用于指示所述程序的两条操作发生重排序的最大间隔。2.根据权利要求1所述的程序检测方法,其特征在于,所述根据查询参数和所述程序,获得所述程序运行在弱内存环境上的结果,包括:根据所述查询参数、所述程序的第一线程中的第一操作与所述第一线程中的第二操作的间隔、和所述程序的第二线程中的第三操作与所述第二线程中的第四操作的间隔,获得所述程序运行在所述弱内存环境上的结果;其中,所述第一操作和所述第三操作为对同一变量进行的一对读写操作,所述第二操作和所述第四操作为对同一变量进行的一对读写操作,所述第一操作和所述第二操作为对不同变量进行的操作,所述第三操作和所述第四操作为对不同变量进行的操作。3.根据权利要求2所述的程序检测方法,其特征在于,还包括:采用内存读写模式查询规则,对所述程序的第一线程中的第一操作、所述第一线程中的第二操作、所述程序的第二线程中的第三操作和所述第二线程中的第四操作进行检测,获得所述程序运行在所述弱内存环境上的结果。4.根据权利要求3所述的程序检测方法,其特征在于,所述内存读写模式查询规则是根据所述查询参数确定的,所述内存读写模式查询规则用于确定所述第一线程和所述第二线程在时间上是否发生重叠。5.根据权利要求1

4中任一项所述的程序检测方法,其特征在于,所述查询参数是所述用户确定的,所述查询参数包括片内写操作延迟。6.根据权利要求1

5中任一项所述的程序检测方法,其特征在于,所述弱内存环境为非统一内存访问架构NUMA的运行设备对应的运行环境。7.根据权利要求1

6中任一项所述的程序检测方法,其特征在于,还包括:向所述用户提供所述结果,其中,所述结果包括修改建议。8.根据权利要求7所述的程序检测方法,其特征在于,还包括:响应于所述用户的确定指示,根据所述修改建议修改所述程序。9.一种程序检测装置,其特征在于,包括:接收单元和获取单元;其中,所述接收单元,用于接收用户提供的程序;所述获取单元,用于根据查询参数和所述程序,获得所述程序运行在弱内存环境上的结果;其中,所述查询参数用于指示所述程序的两条操作发生重排序的最大间隔。10.根据权利要求9所述的程序检测装置,其特征在于,所述获取单元,还用于根据所述查询参数、所述程序的第一线...

【专利技术属性】
技术研发人员:张汝涛周卿
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1