[发明专利]一种基于搜索的编译器优化序列故障定位方法在审
| 申请号: | 202110331114.4 | 申请日: | 2021-03-29 |
| 公开(公告)号: | CN113064821A | 公开(公告)日: | 2021-07-02 |
| 发明(设计)人: | 周志德;江贺;任志磊;高国军 | 申请(专利权)人: | 大连理工大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F8/41;G06N3/12 |
| 代理公司: | 大连理工大学专利中心 21200 | 代理人: | 隋秀文;温福雪 |
| 地址: | 116024 辽*** | 国省代码: | 辽宁;21 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 搜索 编译器 优化 序列 故障 定位 方法 | ||
1.一种基于搜索的编译器优化序列故障定位方法,其特征在于,步骤如下:
步骤1:编译故障编译器,获取优化集合;
使用插桩的方式编译故障编译器C,并获取编译优化信息,构成优化集合O;
步骤2:获取触发编译器优化序列故障的程序p和优化序列s;
步骤3:获取故障时编译器的代码覆盖信息;
使用编译器C在优化序列s的作用下编译程序p,并获取编译器C执行过程中的代码覆盖信息ts;其中代码覆盖信息包括编译器执行时所涉及的文件以及文件中被执行的代码语句;
步骤4:搜索无故障优化序列;
将编译器C,优化集合O,程序p和故障优化序列s,以及代码覆盖信息ts作为搜索算法的输入,利用搜索算法自动地寻找包含故障优化序列s中的所有优化,但不会触发故障的优化序列;若搜索算法得到的无故障的优化序列集合为S={s1,s2,…,sn},则其对应的编译器C执行过程中的代码覆盖信息集合为T={t1,t2,…,tn};
步骤5:计算文件可疑度;
首先,根据ts和T,计算故障发生时,编译器所执行的各条代码语句的可疑度;然后将文件中所有被执行代码语句的平均可疑度作为该文件的可疑度;
其中,代码语句的可疑度计算公式如下:
efl和nfl分别表示执行与不执行代码语句l的故障优化序列数,而epl则表示执行代码语句l的无故障优化序列数;由于仅考虑故障发生时,编译器所执行的代码语句,所以efl和nfl分别1和0;因此代码语句的可疑度计算公式简化为:
对于ts中各个文件的被执行代码语句,其epl通过遍历T计算得到;
文件可疑度的具体计算公式如下:
其中,nf为文件f中被执行代码语句的数量,li为第i条被执行的代码语句l;
步骤6:报告可疑文件;
根据步骤5计算得到的文件可疑度,对故障发生时,编译器涉及到的源码文件进行排序,可疑度越大越靠前;然后将排序后的文件列表报告给编译器开发者,作为优化序列故障可能出现的位置。
2.根据权利要求1所述的一种基于搜索的编译器优化序列故障定位方法,其特征在于,在步骤4中,所述的搜索算法的步骤如下:
步骤a:初始化种群;
采用随机的方式生成个体,即从优化集合O中随机选择k个优化构成一条优化序列;初始化过程中,k值可为大于故障优化序列s中优化数量的任意正整数,需保证故障优化序列s中的所有优化均被包含在随机生成的优化序列中;
步骤b:适应度评价;
适应度评价即衡量种群中每个个体,即每条优化序列满足目标的程度;优化序列i的适应度为其使编译器C执行的代码覆盖信息ti与ts的相似性;采用杰卡德相似性系数作为衡量ti与ts相似性的方法,具体定义如下:
其中
若种群中各优化序列的适应度评价结束时,算法的终止条件未达到,则继续执行以下步骤,否则终止算法;
步骤c:选择;
选择是指在种群中选择适应度较好的优化序列,以构成新的种群;首先将种群中的优化序列以适应度大小按降序排列,然后选择前m个优化序列作为新的种群;
步骤d:交叉;
交叉是指对选择步骤产生的新种群中的两条优化序列以一定的概率进行拆分与重新拼接,以构成新的优化序列;使用单点交叉的方式对两条优化序列进行交叉,即在优化序列i和j中选择一个点,将每条优化序列一分为二,然后优化序列i的前半部分与优化序列j的后半部分拼接,优化序列j的前半部分与优化序列i的后半部分拼接,从而构成两条新的优化序列;然而,拼接之后的优化序列需要保证故障优化序列s中的所有优化均被包含在其中;否则,丢弃拼接后的优化序列,保持原有优化序列不变;
步骤e:变异;
变异是指对种群中每条优化序列包含的各个优化以一定的概率进行变异操作,以形成新的优化序列;变异操作包括删除、插入、替换和移位,具体如下:
1)删除:是指将优化序列中的某个优化从优化序列中删除;
2)插入:是指在优化序列的某个位置插入一个优化;
3)替换:是指将优化序列中的某个优化用其他优化替代;
4)移位:是指将优化序列中某两个优化的位置进行互换;
在变异过程中,随机选择一种变异操作对优化序列中的某个优化进行变异,其中优化被变异的概率为1/size,size为当前优化序列中包含优化的数量;经过变异后,若新的优化序列仍然包含故障优化序列s中的所有优化,则说明变异成功;否则,丢弃变异后的优化序列,保持原有优化序列不变;
变异之后转到步骤b继续执行算法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110331114.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种具有防尘功能的激光切割装置
- 下一篇:一种涤纶面料防皱染整处理工艺





