[發明專利]一種面向堆操作程序的內存泄漏檢測方法有效
| 申請號: | 201210041025.7 | 申請日: | 2012-02-22 |
| 公開(公告)號: | CN102662825A | 公開(公告)日: | 2012-09-12 |
| 發明(設計)人: | 王戟;董龍明;陳立前;董威;劉萬偉;李仁見 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 國防科技大學專利服務中心 43202 | 代理人: | 郭敏 |
| 地址: | 410073 湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 面向 操作 程序 內存 泄漏 檢測 方法 | ||
技術領域
本發明涉及計算機程序中一類具有動態、易變共享內存操作特性的堆操作程序內存泄漏的靜態檢測方法。?
背景技術
堆操作程序包括使用動態數據結構(如:鏈表、樹等)存儲和處理數據的程序,在系統軟件和應用軟件非常常見,比如:操作系統(如:Linux、FreeRTOS)常常使用優先級隊列或哈希表管理系統的任務;設備驅動管理程序使用共享單向或雙向鏈表管理各種設備;服務器軟件(如:Apache)使用容器(Collection)接受和存儲各種用戶請求;信息系統管理軟件使用各類容器表示視圖和存儲從數據庫中查詢得到的數據。這類程序都具有運行過程中動態分配、聚合、分離或釋放堆中內存單元的特點;另一方面,分析這類程序源代碼時可知,程序員使用指針變量(或指針域)直接(或間接)操縱這些內存單元,使得這些動態內存單元間存在著復雜的指向關系,比如:某個內存單元可能被多個指針變量或其它內存單元所指向。因此,判斷堆操作程序中已申請的內存單元是否最終被釋放比其他類型的程序困難和復雜得多。內存泄漏是指動態分配的內存沒有即時被釋放,它是一類重要的軟件錯誤,它能夠導致持續運行的系統由于內存資源耗盡而崩潰,或者重要的信息泄漏。?
當前,內存泄漏檢測有多種方法及其工具,主要分為動態和靜態的方法。典型動態方法的工具有Purify、JPF等,這類方法雖能準確地定位錯誤,自動化程度高,但受限于輸入用例,不能檢查所有的內存泄漏錯誤;靜態方法是在不運行軟件前提下檢查是否存在內存泄漏,典型工作有:LCLint、SATURN等,可以找到所有可能的內存泄漏錯誤,但是存在較高的誤報率。因此,如何在保證精度的前提下使得靜態檢測工具能夠檢測大規模程序是當前靜態檢測研究的熱點和難點。針對動態、易變分配內存的堆操作程序中內存泄漏檢測的方法主要可以分為:?
(1)域不敏感檢測方法?
域不敏感檢測方法是基于指針別名分析檢測程序中每個分配的內存結點是否最終被釋放,又可以分為流敏感和流不敏感、路徑敏感和路徑不敏感、上下文敏感和上下文不?敏感6種檢測方法。例如:Zongxing?Xu等人在2008年軟件質量國際會議(QSIC′08)上提出了基于約束求解器CVC3路徑敏感的過程間內存泄漏算法;Yungbum?Jung和Kwangkeun?Yi在國際內存管理論壇會議(ISMM’08)上提出了一種自動化的靜態分析工具SPARROW,設計了基于逃逸模型的參數化過程函數摘要方法;除此之外,Xie?Yichen和Alex?Aiken在第10屆歐洲軟件工程會議上提出了內存泄漏檢測工具Saturn,將內存泄漏問題規約為布爾公式的可滿足性問題,然后使用SAT求解器判斷是否存在內存泄漏;David?L.Heine等人在第28屆軟件工程國際會議上提出了內存泄漏檢測工具Clouseau,它是基于指針所有權描述釋放堆內存結點的指針變量,然后構造所有權約束系統檢測內存泄漏錯誤。所有這些工具不能直接應用于檢測堆操作程序中內存泄漏錯誤。?
(2)域敏感檢測方法?
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210041025.7/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:利用空間混合索引機制檢測釣魚網頁的方法
- 下一篇:一種開口手套





