CN105260312B - 一种多核实时系统应用数据竞争错误的调试方法 - Google Patents
一种多核实时系统应用数据竞争错误的调试方法 Download PDFInfo
- Publication number
- CN105260312B CN105260312B CN201510701351.XA CN201510701351A CN105260312B CN 105260312 B CN105260312 B CN 105260312B CN 201510701351 A CN201510701351 A CN 201510701351A CN 105260312 B CN105260312 B CN 105260312B
- Authority
- CN
- China
- Prior art keywords
- mrow
- msub
- pitching pile
- predicate
- mfrac
- 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.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明是一种多核实时系统应用数据竞争错误的调试方法,属于多核应用程序调试技术领域。本发明基于多核操作系统编写发生数据竞争的应用程序测试集,设计插桩谓词,手工对测试程序进行插桩,运行插桩后的测试集,统计调试输出对插桩位置的可疑度排序,根据统计调试结果快速定位测试集代码可能发生并发错误数据竞争的位置。所设计的谓词记录应用程序中的全局变量在被同一任务连续两次访问过程中其值改变次数,在访问全局变量前,判断此时全局变量的值与记录的值是否一致;在访问全局变量后,更新全局变量值的记录。本发明可以方便快速的对共享数据进行插桩,降低开发自动化插桩工具的成本和时间,节约了通过循环执行断点调试方法所耗费的时间。
Description
技术领域
本发明涉及针对多核操作系统应用程序的并发错误数据竞争通过统计调试的方法进行定位,属于多核应用程序调试技术领域,方便开发人员快速定位并发错误。
背景技术
多核操作系统应用程序因为非确定性的线程交替,容易产生数据竞争,死锁,原子性侵犯等并发相关的错误,并且由于调度不确定性在调试过程中导致问题极其难以定位。对于开发者来说,即使知道产生错误的输入,重现错误执行也是很困难的。数据竞争是至少两个线程没有按顺序限制访问同一内存位置,其中至少一个访问是写操作。数据竞争本身不一定是错误,但是它导致严重的难以发现,崩溃,并发相关的软件缺陷。
一方面,针对不同处理器已有硬件设备通过仿真来辅助开发人员在开发阶段顺利调试,但是其价格昂贵,同时对开发者技术水平也有很高要求。另一方面,也有通过静态或者动态算法来检测代码中的并发错误来辅助开发人员排除故障,但是静态方法利用程序的依赖关系和类型约束等信息来分析程序的可能故障点,为更深层次的自动化检测提供必要条件;而动态二进制插桩技术来检测代码中的并发错误的方法不需要修改或重新编译应用程序的源代码,并且支持动态生成代码来检测程序,但是会有较高的开销,拖慢程序的执行,这部分的开销对于程序执行而言是不可忽略的。
目前针对多核操作系统应用程序,不适用已有的自动化插桩工具,而且针对特定操作系统开发维护一套自动化插桩工具耗费时力人力较高,且动态插桩技术存在开销大的问题。
发明内容
本发明为了克服现有技术的不足,提供一种多核实时系统应用数据竞争错误的调试方法,通过统计调试的方法对收集的信息进行处理对插桩位置进行可疑度排序,快速通过排序结果定位应用程序中的实际发生故障的位置,且降低了动态二进制插桩方法对程序执行的开销。
本发明提供的一种多核实时系统应用数据竞争错误的调试方法,实现步骤如下:
步骤1,在特定多核操作系统基础上编写应用程序测试集,发生并发错误数据竞争的benchmark;
步骤2,设计插桩谓词,对测试集中的程序进行手工插桩;
所述的插桩谓词,用于记录访问全局变量的值改变次数;
步骤3,运行插桩后的测试集,在程序运行过程中收集插桩的谓词记录信息,并记录程序的每次执行结果;
所述的谓词记录信息,包括谓词值、插桩行号和插桩所在函数;
步骤4,将插桩后的测试集至少执行X次,收集谓词记录信息和程序执行结果,作为统计调试算法的输入,执行统计调试算法,输出对程序插桩位置可能发生并发错误数据竞争的可疑度排序;X为正整数;
步骤5,根据可疑度排序结果快速定位测试集程序中可能发生并发错误数据竞争的位置。
所述步骤2中,对测试集中的程序进行手工插桩,实现过程包括:
(1)对多核操作系统应用程序的每一个任务中全局变量的访问位置都进行插桩;
(2)利用编写的插桩谓词函数在测试集程序中手动插桩;
所述的插桩函数包括三个接口函数:函数initSite()在初次访问时初始化谓词记录信息结构体;函数cmpSite()用于更新数据结构体中谓词值,在访问全局变量之前,比较该全局变量的本次值与记录值是否一致,若不一致,将谓词值加1,否则保持谓词值不变;函数upSite()在访问全局变量之后更新全局变量的记录值。
所述步骤4中的统计调试算法的实现过程为:
步骤4.1,输入谓词记录信息和程序执行结果;
步骤4.2,统计成功测试总数Tp,失败测试总数Tf,测试用例总数Tp+Tf,覆盖插桩位置s的成功测试数Tp(s),覆盖插桩位置s的失败测试数Tf(s),覆盖插桩位置s的测试总数Tp(s)+Tf(s),未覆盖插桩位置s的成功执行次数,未覆盖插桩位置s的失败执行次数,未覆盖插桩位置s的执行次数。
执行步骤4.3或步骤4.4来获得插桩位置的可疑度排序;
步骤4.3,利用概率统计的方法计算每个谓词位置存在可疑度的概率;
步骤4.4,利用基于谓词覆盖统计的原理,分析插桩周围代码的出错概率。
所述的步骤4.3根据不同的统计模型计算公式来得到插桩位置的可疑度:
对各插桩位置的可疑度进行排序。
所述的步骤4.4中对每个谓词P,根据设如下公式计算谓词P的怀疑度:
其中,FT(P)和ST(P)分别表示P在失败和成功执行中取值为真的次数,Fo(P)和So(P)分别表示P在失败和成功执行中出现的次数。
本发明具有如下优点和积极效果:
(1)调试人员在调试定位并发错误的过程中可以方便快速的对共享数据进行插桩,只需传入共享数据的地址,大小,行号,所在函数等容易获得的信息,调用插桩API接口可以自动维护记录插桩信息。降低开发自动化插桩工具的成本和时间。
(2)根据插桩覆盖记录的信息和程序执行结果成功或失败作为统计调试算法的输入,计算得到各个插桩位置的可疑度排序结果来定位错误,降低了对调试人员技术水平的要求,同时也节约了通过循环执行断点调试方法所耗费的时间。
附图说明
图1是本发明谓词插桩API接口示意图;
图2是本发明进行谓词插桩的流程示意图;
图3是本发明中统计调试算法程序的工作流程示意图。
具体实施方式
下面将结合附图和实施示例对本发明作进一步的详细说明。通过足够详细的描述这些示例,使得本领域技术人员能够理解和实践本发明。在不脱离本发明的主旨和范围的情况下,可以对实施做出逻辑的、实现的和其他的改变。因此,以下详细说明不应该被理解为限制意义,本发明的范围仅仅由权利要求来限定。
多核操作系统应用程序的调试工作,调试人员通常通过程序的循环多次执行,设定断点的方法进行,但此方法对调试人员的技术水平提出了较高要求,且在实际工作中调试过程会耗费较多时间。故而可以通过在开发程序过程中按照谓词插桩的要求在代码中插桩,当程序出现问题时,多次执行程序完成插桩覆盖信息的记录并且记录程序执行成功或者失败,将这些结果作为统计调试算法的输入,统计调试算法输出对插桩位置的可疑度排序结果,调试人员根据排序结果来快速定位代码中可能存在故障的位置,减少调试人员的工作。
本发明提供的多核实时系统应用数据竞争错误的调试方法,针对某特定多核操作系统,基本步骤包括:编写应用程序测试集;设计插桩谓词;手工在测试集上插桩谓词;运行插桩后的测试集收集执行结果,执行结果作为统计调试算法的输入,统计调试算法输出可疑度排序结果;根据排序结果定位测试集中发生并发错误的位置。下面详细说明步骤1~步骤5。
步骤1,在特定多核操作系统基础上编写应用程序测试集,发生并发错误数据竞争的benchmark。
Benchmark表示基准测试程序。
步骤2,设计插桩谓词,对测试集中的程序进行手工插桩。
根据发生并发错误数据竞争的特征,设计记录在被同一任务连续两次访问过程中访问的全局变量的值改变次数的谓词。每次运行程序,收集谓词记录信息,包括:谓词值,插桩行号,以及插桩所在函数。
本步骤中,对测试集中的程序进行手工插桩,收集测试程序访问全局变量的信息,实现过程包括步骤2.1~2.3。
步骤2.1,对多核操作系统应用程序的每一个任务中全局变量的访问位置都进行插桩;
步骤2.2,利用编写的插桩函数在测试集程序中手动插桩;
如图1所示,为所设计的谓词记录信息结构体和插桩函数示意图。插桩函数包括三个接口函数:initSite()、cmpSite()和upSite()。函数initSite()在初次访问时初始化谓词记录信息结构体。函数cmpSite()用于更新数据结构体中谓词值,在访问全局变量之前,比较该全局变量本次值与记录值是否一致,若不一致,将谓词值加1,否则保持谓词值不变。函数upSite()在访问全局变量之后更新全局变量的记录值。
谓词记录信息结构体如下:
int line;//line表示插桩行号
int predicate;//predicate表示谓词值
char func[20];//func表示插桩所在函数
const void*address;//address表示全局变量起始地址
其中,predicate表示谓词值,如果本次全局变量的值与记录值不一致,predicate增加1,否则predicate保持不变。
初始化谓词记录信息结构体时,谓词值是0。
图1所示,函数initSite()包括四个参数:line、address、size和function,其中size表示全局变量地址空间大小,function就是插桩所在函数。每个插桩位置以line为key存储在哈希表siteHash中,findSiteHash(line)表示通过key查找到对应的site结构体信息。cmpNode()表示比较全局变量的记录值与此次值是否一致,全局变量通过起始地址和地址空间大小两个数记录,比较整个地址空间值是否一致。upNode()表示根据全局变量起始地址更新记录的全局变量值。
步骤3,运行插桩后的测试集,在程序运行过程中收集插桩的谓词记录信息,并且记录程序的每次执行结果。
谓词插桩的过程如图2所示,调试人员在插桩多核操作系统应用程序遵循图示步骤控制插桩,在手动插桩过程中,首先针对共享数据被两个或者多个任务同时访问时是否被正确保护的情况,找到应用程序中此类情况的具体位置。黑色虚框表示插桩,黑色实框表示任务执行步骤。在任务访问共享数据之前,如果是第一次访问,调用插桩API的initSite()函数初始化谓词记录信息的数据结构,然后调用cmpSite()函数完成判断比较工作,判断此任务此次访问与上一次访问共享数据的过程中,共享数据的值是否一致,记录插桩谓词值,插桩行号,插桩所在函数。在访问共享数据之后,调用upSite()函数更新记录共享数据的值。
步骤4,将插桩后的测试集执行30次。编写统计调试算法,统计调试算法的输入是插桩后的测试集执行30次收集的谓词记录信息和程序执行结果,统计调试的输出是对程序插桩位置可能发生并发错误数据竞争的可疑度排序。
本发明方法中优选X的值为30次,即将插桩后的测试集执行30次,以收集谓词记录信息和程序执行结果。经过实验,进行30次的测试收集的数据可获得较准确的排序结果。
当程序执行过程中出现了失败的情况,需要定位程序执行失败的原因时,调试人员可以通过多次执行有问题的程序代码,输出产生覆盖谓词信息的记录和程序执行成功或者失败的结果,将这些信息作为统计调试工具的输入。
所述步骤4中的统计调试算法的实现过程为:
步骤4.1,输入30次测试执行收集的谓词记录信息和程序执行结果;
步骤4.2,统计成功测试总数Tp,失败测试总数Tf,测试用例总数Tp+Tf,覆盖插桩位置s的成功测试总数Tp(s),覆盖插桩位置s的失败测试总数Tf(s),覆盖语句s的测试总数Tp(s)+Tf(s),未覆盖插桩位置s的成功执行次数,未覆盖语句s的失败执行次数,未覆盖语句s的执行次数。
可利用步骤4.3或步骤4.4的统计调试模型计算插桩谓词的可疑度排序,可根据不同统计调试模型得出不同的输出结果。
步骤4.3,利用概率统计的方法计算每个谓词位置存在可疑度的概率。
可根据不同的使用情况,选取相应的统计模型来计算可疑度。下面是三个可疑度计算的统计模型:
根据统计模型计算公式,对每个插桩位置获得一个可疑度值,然后对各插桩位置的可疑度进行排序。
步骤4.4,利用基于谓词覆盖统计的原理,分析插桩周围代码的出错概率。对每个谓词P,FT(P)和ST(P)表示P在失败和成功执行中取值为真的次数,Fo(P)和So(P)表示P在失败和成功执行中出现的次数,则谓词P的怀疑度用如下公式计算:
同样原理,FOnly错误定位只关注失败运行轨迹,从统计趋势上轨迹失败运行从而定位错误。
图3所示是统计调试工具的工作过程,统计调试算法首先将多次执行应用程序的日志记录文件和各次对应的程序执行结果读入,读入后分别计算成功测试总数Tp,失败测试总数Tf,测试用例总数Tp+Tf,覆盖插桩位置s的成功测试数Tp(s),覆盖插桩位置s的失败测试数Tf(s),覆盖插桩位置s的测试总数Tp(s)+Tf(s),未覆盖插桩位置s的成功执行次数,未覆盖语句s的失败执行次数,未覆盖语句s的执行次数。
根据不同统计调试模型计算排序各谓词插桩位置的可疑度结果。
图3中,可分别根据Tarantula算法、Ochiai算法、Jaccard算法、Fonly算法、Fpass算法等来计算获得各谓词位置的可疑度排序,并输出结果到相应的结果文件中保存。
步骤5,根据可疑度排序结果快速定位测试集程序中可能发生并发错误数据竞争的位置。
可疑度的排序结果对调试人员在快速方便定位并发错误数据竞争提供了依据。调试人员依次从故障可疑度最高的插桩位置开始排查,可以节约调试时间。通过小型测试集的验证,此方法对定位实际代码中的并发错误数据竞争有较高效率,不失为对多核操作系统应用程序调试定位并发错误的一种行之有效的方法。
本发明未详细阐述部分属于本领域技术人员公知技术。
本发明针对多核操作系统应用程序的并发错误数据竞争,通过统计调试的方法进行定位,设计并发错误数据竞争相关的插桩谓词,通过对源代码手工插桩完成覆盖信息的记录,解决了面对不同多核操作系统应用程序需要开发维护不同自动化插桩工具的高成本高耗时的缺点。本发明方法中仅仅插桩与产生并发错误数据竞争特性相关的语句提高了插桩效率,降低动态二进制插桩方法对程序执行的开销。本发明统计调试的方法对插桩谓词的可疑度进行排序,可以方面快速的对代码进行有目的定位排查,减少调试工作对开发者技术水平的限制。
Claims (3)
1.一种多核实时系统应用数据竞争错误的调试方法,其特征在于,针对多核操作系统应用程序的并发错误数据竞争通过统计调试的方法进行定位,具体实现步骤如下:
步骤1,在特定多核操作系统基础上编写应用程序测试集,发生并发错误数据竞争的测试集benchmark;
步骤2,设计插桩谓词,对测试集中的程序进行手工插桩;
所述的插桩谓词,用于记录访问全局变量的值改变次数;
步骤3,运行插桩后的程序测试集,在程序运行过程中收集插桩的谓词记录信息,并记录程序的每次执行结果;
所述的谓词记录信息,包括谓词值、插桩行号和插桩所在函数;
步骤4,将插桩后的程序测试集至少执行X次,收集谓词记录信息和程序执行结果,作为统计调试算法的输入,执行统计调试算法,输出对程序插桩位置可能发生并发错误数据竞争的可疑度排序;X为正整数;
所述的统计调试算法的实现过程为:
步骤4.1,输入谓词记录信息和程序执行结果;
步骤4.2,统计成功测试总数Tp,失败测试总数Tf,测试用例总数Tp+Tf,覆盖插桩位置s的成功测试数Tp(s),覆盖插桩位置s的失败测试数Tf(s),覆盖插桩位置s的测试总数Tp(s)+Tf(s);
执行步骤4.3或步骤4.4来获得插桩位置的可疑度排序;
步骤4.3,利用概率统计的方法计算每个谓词位置存在可疑度的概率;采用统计模型来确定谓词位置的可疑度,各插桩位置s的可疑度值统计模型分别通过Tarantula算法、Ochiai算法、Jaccard算法计算,公式如下:
<mrow>
<mi>T</mi>
<mi>a</mi>
<mi>r</mi>
<mi>a</mi>
<mi>n</mi>
<mi>t</mi>
<mi>u</mi>
<mi>l</mi>
<mi>a</mi>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
<mo>/</mo>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
</mrow>
<mrow>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
<mo>/</mo>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mo>+</mo>
<msub>
<mi>T</mi>
<mi>p</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
<mo>/</mo>
<msub>
<mi>T</mi>
<mi>p</mi>
</msub>
</mrow>
</mfrac>
</mrow>
<mrow>
<mi>O</mi>
<mi>c</mi>
<mi>h</mi>
<mi>i</mi>
<mi>a</mi>
<mi>i</mi>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
</mrow>
<msqrt>
<mrow>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mo>&times;</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>T</mi>
<mi>p</mi>
</msub>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
<mo>+</mo>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
<mo>)</mo>
</mrow>
</mrow>
</msqrt>
</mfrac>
</mrow>
<mrow>
<mi>J</mi>
<mi>a</mi>
<mi>c</mi>
<mi>c</mi>
<mi>a</mi>
<mi>r</mi>
<mi>d</mi>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mrow>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mo>+</mo>
<msub>
<mi>T</mi>
<mi>p</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>s</mi>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
</mrow>
然后对各插桩位置的可疑度进行排序;
步骤4.4,利用基于谓词覆盖统计的原理,分析插桩周围代码的出错概率;
根据下面公式来计算谓词P的可疑度CBI(P):
<mrow>
<mi>C</mi>
<mi>B</mi>
<mi>I</mi>
<mrow>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfrac>
<mn>2</mn>
<mrow>
<mfrac>
<mn>1</mn>
<mrow>
<mfrac>
<mrow>
<msub>
<mi>F</mi>
<mi>T</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>F</mi>
<mi>T</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
</mrow>
<mo>+</mo>
<msub>
<mi>S</mi>
<mi>T</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
<mo>-</mo>
<mfrac>
<mrow>
<msub>
<mi>F</mi>
<mi>o</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<msub>
<mi>F</mi>
<mi>o</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
</mrow>
<mo>+</mo>
<msub>
<mi>S</mi>
<mi>o</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
</mrow>
</mfrac>
<mo>+</mo>
<mfrac>
<mn>1</mn>
<mfrac>
<mrow>
<mi>log</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>F</mi>
<mi>o</mi>
</msub>
<mo>(</mo>
<mi>P</mi>
<mo>)</mo>
<mo>)</mo>
</mrow>
</mrow>
<mrow>
<mi>log</mi>
<mrow>
<mo>(</mo>
<mo>|</mo>
<msub>
<mi>T</mi>
<mi>f</mi>
</msub>
<mo>|</mo>
<mo>)</mo>
</mrow>
</mrow>
</mfrac>
</mfrac>
</mrow>
</mfrac>
</mrow>
其中,FT(P)和ST(P)表示P在失败和成功执行中取值为真的次数,Fo(P)和So(P)表示P在失败和成功执行中出现的次数;
步骤5,根据可疑度排序结果快速定位测试集程序中可能发生并发错误数据竞争的位置。
2.根据权利要求1所述的多核实时系统应用数据竞争错误的调试方法,其特征在于,所述的步骤2中,对测试集中的程序进行手工插桩,实现过程包括:
(1)对多核操作系统应用程序的每一个任务中全局变量的访问位置都进行插桩;
(2)利用编写的插桩函数在测试集程序中手动插桩;
所述的插桩函数包括三个接口函数:函数initSite()在初次访问时初始化谓词记录信息结构体;函数cmpSite()用于更新数据结构体中谓词值,在访问全局变量之前,比较该全局变量本次值与记录值是否一致,若不一致,将谓词值加1,否则保持谓词值不变;函数upSite()在访问全局变量之后更新全局变量的记录值。
3.根据权利要求1所述的多核实时系统应用数据竞争错误的调试方法,其特征在于,所述的步骤4中,X取值为30。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510701351.XA CN105260312B (zh) | 2015-10-26 | 2015-10-26 | 一种多核实时系统应用数据竞争错误的调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510701351.XA CN105260312B (zh) | 2015-10-26 | 2015-10-26 | 一种多核实时系统应用数据竞争错误的调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260312A CN105260312A (zh) | 2016-01-20 |
CN105260312B true CN105260312B (zh) | 2018-04-06 |
Family
ID=55100012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510701351.XA Active CN105260312B (zh) | 2015-10-26 | 2015-10-26 | 一种多核实时系统应用数据竞争错误的调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260312B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201892B (zh) * | 2016-07-20 | 2019-02-01 | 中国航空工业集团公司航空动力控制系统研究所 | 用于嵌入式软件的异常中断源定位检测方法 |
CN106844215B (zh) * | 2017-01-24 | 2020-03-31 | 东南大学 | 一种基于约束求解的原子违背探测方法 |
CN109960529B (zh) * | 2017-12-21 | 2023-03-17 | 北京奇虎科技有限公司 | 一种程序代码的修复方法和装置 |
CN109189607B (zh) * | 2018-08-13 | 2020-08-04 | 南京翼辉信息技术有限公司 | 一种应用程序断点恢复的方法 |
CN110837472B (zh) * | 2019-11-06 | 2021-05-14 | 腾讯科技(深圳)有限公司 | 一种浏览器测试方法、装置及计算机设备 |
CN111222142B (zh) * | 2020-01-09 | 2022-11-18 | 大连理工大学 | 一种车载obu的数据竞争检测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN103729288A (zh) * | 2013-11-01 | 2014-04-16 | 华中科技大学 | 一种嵌入式多核环境下应用程序的调试方法 |
CN104461521A (zh) * | 2014-11-26 | 2015-03-25 | 北京航空航天大学 | 一种应用程序重放方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549150B2 (en) * | 2004-03-24 | 2009-06-16 | Microsoft Corporation | Method and system for detecting potential races in multithreaded programs |
-
2015
- 2015-10-26 CN CN201510701351.XA patent/CN105260312B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN103729288A (zh) * | 2013-11-01 | 2014-04-16 | 华中科技大学 | 一种嵌入式多核环境下应用程序的调试方法 |
CN104461521A (zh) * | 2014-11-26 | 2015-03-25 | 北京航空航天大学 | 一种应用程序重放方法及系统 |
Non-Patent Citations (1)
Title |
---|
面向多核平台的网络应用建模;张哲 等;《微电子学与计算机》;20071031;第24卷(第10期);第39-40页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105260312A (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260312B (zh) | 一种多核实时系统应用数据竞争错误的调试方法 | |
Hazimeh et al. | Magma: A ground-truth fuzzing benchmark | |
Liu et al. | SOBER: statistical model-based bug localization | |
Arisholm et al. | Predicting fault-prone components in a java legacy system | |
Le Goues et al. | Specification mining with few false positives | |
Wedyan et al. | The effectiveness of automated static analysis tools for fault detection and refactoring prediction | |
CN101706749B (zh) | 基于软件安全缺陷检测的综合处理方法 | |
Hardy et al. | Static probabilistic worst case execution time estimation for architectures with faulty instruction caches | |
CN110515826B (zh) | 一种基于次数频谱与神经网络算法的软件缺陷定位方法 | |
CN105468517B (zh) | 一种基于黑盒测试用例约简的统计错误定位方法 | |
CN110059014B (zh) | 一种并发程序数据竞争指令级定位方法 | |
Du et al. | Fault triggers in the tensorflow framework: An experience report | |
CN111752833B (zh) | 一种软件质量体系准出方法、装置、服务器及存储介质 | |
Yang et al. | A fault localization method based on conditional probability | |
Bandeira et al. | Non-intrusive fault injection techniques for efficient soft error vulnerability analysis | |
CN102622295B (zh) | 一种基于谓词执行信息分析的自适应软件缺陷定位方法 | |
Wang et al. | Map-coverage: A novel coverage criterion for testing thread-safe classes | |
CN109522207B (zh) | 一种基于约束求解的原子集合序列化违背探测方法 | |
Song et al. | R2z2: Detecting rendering regressions in web browsers through differential fuzz testing | |
US10853051B2 (en) | Automated candidate repair patch generation | |
CN104572470B (zh) | 一种基于蜕变关系的整数溢出故障检测方法 | |
Yang et al. | Silent compiler bug de-duplication via three-dimensional analysis | |
Liang et al. | Improving the precision of static analysis: Symbolic execution based on GCC abstract syntax tree | |
Pomorova et al. | Assessment of the source code static analysis effectiveness for security requirements implementation into software developing process | |
Chu et al. | Effective fault localization and context‐aware debugging for concurrent programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |