[發(fā)明專利]一種基于搜索的編譯器優(yōu)化序列故障定位方法在審
| 申請?zhí)枺?/td> | 202110331114.4 | 申請日: | 2021-03-29 |
| 公開(公告)號: | CN113064821A | 公開(公告)日: | 2021-07-02 |
| 發(fā)明(設計)人: | 周志德;江賀;任志磊;高國軍 | 申請(專利權(quán))人: | 大連理工大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F8/41;G06N3/12 |
| 代理公司: | 大連理工大學專利中心 21200 | 代理人: | 隋秀文;溫福雪 |
| 地址: | 116024 遼*** | 國省代碼: | 遼寧;21 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 搜索 編譯器 優(yōu)化 序列 故障 定位 方法 | ||
本發(fā)明提供了一種基于搜索的編譯器優(yōu)化序列故障定位方法,可用于C/C++語言的編譯器優(yōu)化序列故障定位,如開源編譯器LLVM等;亦可根據(jù)特定編程語言的編譯器特性,對本發(fā)明的相關(guān)步驟進行適配,從而定位該特定編程語言的編譯器優(yōu)化序列故障。本發(fā)明能夠有效地對編譯器優(yōu)化序列故障進行分析定位,從而幫助編譯器開發(fā)者更好、更快地理解與修復編譯器優(yōu)化序列相關(guān)的故障,提高編譯器的質(zhì)量。
技術(shù)領(lǐng)域
本發(fā)明屬于軟件編譯領(lǐng)域,涉及一種用于定位編譯器優(yōu)化序列故障的技術(shù),具體為一種基于搜索的編譯器優(yōu)化序列故障定位方法。
背景技術(shù)
編譯器是整個軟件開發(fā)過程中不可或缺的重要基礎軟件,其不僅將開發(fā)者用高級編程語言編寫的程序轉(zhuǎn)換為計算機可識別的機器碼,而且要負責在編譯過程中對目標程序進行優(yōu)化,以最大限度地發(fā)揮目標程序的性能。隨著編譯技術(shù)的發(fā)展,現(xiàn)代編譯器擁有了大量的代碼優(yōu)化技術(shù)。用戶在使用編譯器編譯程序時,一般會使用多個優(yōu)化組合成一條優(yōu)化序列對目標程序進行優(yōu)化。然而,編譯器作為一種軟件,也不可避免地會出現(xiàn)故障。特別是編譯器優(yōu)化更容易產(chǎn)生故障,各種優(yōu)化之間可能存在相互影響,一種優(yōu)化技術(shù)優(yōu)化后的程序,可能使其他優(yōu)化發(fā)揮更好的效果,也可能使其他優(yōu)化失效,甚至出現(xiàn)故障。但是,當編譯器開發(fā)者對編譯器故障進行修復時,由于編譯器自身規(guī)模較大,使得修復編譯器故障較為耗時,尤其是編譯優(yōu)化序列相關(guān)的故障。因此,為幫助編譯器開發(fā)者快速分析與修復編譯器優(yōu)化序列故障,確保編譯器質(zhì)量,編譯器優(yōu)化序列故障的自動定位就顯得至關(guān)重要。
編譯器優(yōu)化序列故障自動定位是提升編譯器開發(fā)者分析編譯器優(yōu)化序列故障效率的重要途徑,其不僅能自動化地完成對編譯器優(yōu)化序列故障的分析,而且也能準確地報告優(yōu)化序列故障出現(xiàn)的位置。然而,由于現(xiàn)代編譯器中優(yōu)化技術(shù)眾多,使得分析與定位編譯器優(yōu)化序列故障復雜且耗時。雖然已有一些編譯器故障定位技術(shù)的發(fā)明專利,但這些已有的發(fā)明專利面對編譯器優(yōu)化序列故障定位問題,仍存在適配困難、效率低等困難。例如,基于強化學習的編譯器缺陷定位方法(專利號:CN202010880640.1)利用結(jié)構(gòu)變異與強化學習生成編譯成功的變異程序,從而通過對比變異程序和故障觸發(fā)程序使編譯器執(zhí)行路徑的差異來定位編譯器故障;但該方法生成變異程序消耗時間長,難以高效地定位編譯器優(yōu)化序列故障。一種對編譯器中的錯誤進行自動定位的方法(專利號:CN200510090093.2)和一種實現(xiàn)編譯器錯誤的自動定位方法和裝置(專利號:CN201010508986.5)則通過對比正確編譯器和故障編譯器輸出的可執(zhí)行程序來定位編譯器中的故障,但該方法針對優(yōu)化較多的編譯器效率不高,以至于難以定位編譯器優(yōu)化序列故障。
因此,為了高效、準確地定位編譯器優(yōu)化序列故障,本發(fā)明通過對編譯器優(yōu)化序列進行搜索,尋找包含故障優(yōu)化序列中的所有優(yōu)化,但不會觸發(fā)故障的優(yōu)化序列,從而利用在不同優(yōu)化序列下,編譯器執(zhí)行路徑之間的差異對優(yōu)化序列故障進行定位。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提供了一種基于搜索的編譯器優(yōu)化序列故障定位方法。本發(fā)明可用于C/C++語言的編譯器優(yōu)化序列故障定位,如開源編譯器LLVM等;亦可根據(jù)特定編程語言的編譯器特性,對本發(fā)明的相關(guān)步驟進行適配,從而定位該特定編程語言的編譯器優(yōu)化序列故障。
本發(fā)明的技術(shù)方案:
一種基于搜索的編譯器優(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)化序列。
該專利技術(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/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種具有防塵功能的激光切割裝置
- 下一篇:一種滌綸面料防皺染整處理工藝





