[發(fā)明專利]一種基于搜索的編譯器優(yōu)化序列故障定位方法在審
| 申請?zhí)枺?/td> | 202110331114.4 | 申請日: | 2021-03-29 |
| 公開(公告)號: | CN113064821A | 公開(公告)日: | 2021-07-02 |
| 發(fā)明(設(shè)計)人: | 周志德;江賀;任志磊;高國軍 | 申請(專利權(quán))人: | 大連理工大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F8/41;G06N3/12 |
| 代理公司: | 大連理工大學專利中心 21200 | 代理人: | 隋秀文;溫福雪 |
| 地址: | 116024 遼*** | 國省代碼: | 遼寧;21 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 搜索 編譯器 優(yōu)化 序列 故障 定位 方法 | ||
1.一種基于搜索的編譯器優(yōu)化序列故障定位方法,其特征在于,步驟如下:
步驟1:編譯故障編譯器,獲取優(yōu)化集合;
使用插樁的方式編譯故障編譯器C,并獲取編譯優(yōu)化信息,構(gòu)成優(yōu)化集合O;
步驟2:獲取觸發(fā)編譯器優(yōu)化序列故障的程序p和優(yōu)化序列s;
步驟3:獲取故障時編譯器的代碼覆蓋信息;
使用編譯器C在優(yōu)化序列s的作用下編譯程序p,并獲取編譯器C執(zhí)行過程中的代碼覆蓋信息ts;其中代碼覆蓋信息包括編譯器執(zhí)行時所涉及的文件以及文件中被執(zhí)行的代碼語句;
步驟4:搜索無故障優(yōu)化序列;
將編譯器C,優(yōu)化集合O,程序p和故障優(yōu)化序列s,以及代碼覆蓋信息ts作為搜索算法的輸入,利用搜索算法自動地尋找包含故障優(yōu)化序列s中的所有優(yōu)化,但不會觸發(fā)故障的優(yōu)化序列;若搜索算法得到的無故障的優(yōu)化序列集合為S={s1,s2,…,sn},則其對應(yīng)的編譯器C執(zhí)行過程中的代碼覆蓋信息集合為T={t1,t2,…,tn};
步驟5:計算文件可疑度;
首先,根據(jù)ts和T,計算故障發(fā)生時,編譯器所執(zhí)行的各條代碼語句的可疑度;然后將文件中所有被執(zhí)行代碼語句的平均可疑度作為該文件的可疑度;
其中,代碼語句的可疑度計算公式如下:
efl和nfl分別表示執(zhí)行與不執(zhí)行代碼語句l的故障優(yōu)化序列數(shù),而epl則表示執(zhí)行代碼語句l的無故障優(yōu)化序列數(shù);由于僅考慮故障發(fā)生時,編譯器所執(zhí)行的代碼語句,所以efl和nfl分別1和0;因此代碼語句的可疑度計算公式簡化為:
對于ts中各個文件的被執(zhí)行代碼語句,其epl通過遍歷T計算得到;
文件可疑度的具體計算公式如下:
其中,nf為文件f中被執(zhí)行代碼語句的數(shù)量,li為第i條被執(zhí)行的代碼語句l;
步驟6:報告可疑文件;
根據(jù)步驟5計算得到的文件可疑度,對故障發(fā)生時,編譯器涉及到的源碼文件進行排序,可疑度越大越靠前;然后將排序后的文件列表報告給編譯器開發(fā)者,作為優(yōu)化序列故障可能出現(xiàn)的位置。
2.根據(jù)權(quán)利要求1所述的一種基于搜索的編譯器優(yōu)化序列故障定位方法,其特征在于,在步驟4中,所述的搜索算法的步驟如下:
步驟a:初始化種群;
采用隨機的方式生成個體,即從優(yōu)化集合O中隨機選擇k個優(yōu)化構(gòu)成一條優(yōu)化序列;初始化過程中,k值可為大于故障優(yōu)化序列s中優(yōu)化數(shù)量的任意正整數(shù),需保證故障優(yōu)化序列s中的所有優(yōu)化均被包含在隨機生成的優(yōu)化序列中;
步驟b:適應(yīng)度評價;
適應(yīng)度評價即衡量種群中每個個體,即每條優(yōu)化序列滿足目標的程度;優(yōu)化序列i的適應(yīng)度為其使編譯器C執(zhí)行的代碼覆蓋信息ti與ts的相似性;采用杰卡德相似性系數(shù)作為衡量ti與ts相似性的方法,具體定義如下:
其中
若種群中各優(yōu)化序列的適應(yīng)度評價結(jié)束時,算法的終止條件未達到,則繼續(xù)執(zhí)行以下步驟,否則終止算法;
步驟c:選擇;
選擇是指在種群中選擇適應(yīng)度較好的優(yōu)化序列,以構(gòu)成新的種群;首先將種群中的優(yōu)化序列以適應(yīng)度大小按降序排列,然后選擇前m個優(yōu)化序列作為新的種群;
步驟d:交叉;
交叉是指對選擇步驟產(chǎn)生的新種群中的兩條優(yōu)化序列以一定的概率進行拆分與重新拼接,以構(gòu)成新的優(yōu)化序列;使用單點交叉的方式對兩條優(yōu)化序列進行交叉,即在優(yōu)化序列i和j中選擇一個點,將每條優(yōu)化序列一分為二,然后優(yōu)化序列i的前半部分與優(yōu)化序列j的后半部分拼接,優(yōu)化序列j的前半部分與優(yōu)化序列i的后半部分拼接,從而構(gòu)成兩條新的優(yōu)化序列;然而,拼接之后的優(yōu)化序列需要保證故障優(yōu)化序列s中的所有優(yōu)化均被包含在其中;否則,丟棄拼接后的優(yōu)化序列,保持原有優(yōu)化序列不變;
步驟e:變異;
變異是指對種群中每條優(yōu)化序列包含的各個優(yōu)化以一定的概率進行變異操作,以形成新的優(yōu)化序列;變異操作包括刪除、插入、替換和移位,具體如下:
1)刪除:是指將優(yōu)化序列中的某個優(yōu)化從優(yōu)化序列中刪除;
2)插入:是指在優(yōu)化序列的某個位置插入一個優(yōu)化;
3)替換:是指將優(yōu)化序列中的某個優(yōu)化用其他優(yōu)化替代;
4)移位:是指將優(yōu)化序列中某兩個優(yōu)化的位置進行互換;
在變異過程中,隨機選擇一種變異操作對優(yōu)化序列中的某個優(yōu)化進行變異,其中優(yōu)化被變異的概率為1/size,size為當前優(yōu)化序列中包含優(yōu)化的數(shù)量;經(jīng)過變異后,若新的優(yōu)化序列仍然包含故障優(yōu)化序列s中的所有優(yōu)化,則說明變異成功;否則,丟棄變異后的優(yōu)化序列,保持原有優(yōu)化序列不變;
變異之后轉(zhuǎn)到步驟b繼續(xù)執(zhí)行算法。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于大連理工大學,未經(jīng)大連理工大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.17sss.com.cn/pat/books/202110331114.4/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種具有防塵功能的激光切割裝置
- 下一篇:一種滌綸面料防皺染整處理工藝





