如何測試軟體的記憶體洩露呢是有什麼工具嗎

時間 2022-03-14 12:50:50

1樓:天機小子

您好,很高興為您解答。

怎樣檢測記憶體洩露 :

檢測記憶體洩漏的關鍵是要能截獲住對分配記憶體和釋放記憶體的函式的呼叫。截獲住這兩個函式,我們就能跟蹤每一塊記憶體的生命週期,比如,每當成功的分配一塊記憶體後,就把它的指標加入乙個全域性的list中;每當釋放一塊記憶體,再把它的指標從list中刪除。這樣,當程式結束的時候,list中剩餘的指標就是指向那些沒有被釋放的記憶體。

這裡只是簡單的描述了檢測記憶體洩漏的基本原理,詳細的演算法可以參見steve maguire的<>。

如果要檢測堆記憶體的洩漏,那麼需要截獲住malloc/realloc/free和new/delete就可以了(其實new/delete最終也是用malloc/free的,所以只要截獲前面一組即可)。對於其他的洩漏,可以採用類似的方法,截獲住相應的分配和釋放函式。比如,要檢測bstr的洩漏,就需要截獲sysallocstring/sysfreestring;要檢測hmenu的洩漏,就需要截獲createmenu/ destroymenu。

(有的資源的分配函式有多個,釋放函式只有乙個,比如,sysallocstringlen也可以用來分配bstr,這時就需要截獲多個分配函式)

在windows平台下,檢測記憶體洩漏的工具常用的一般有三種,ms c-runtime library內建的檢測功能;外掛程式式的檢測工具,諸如,purify,boundschecker等;利用windows nt自帶的performance monitor。這三種工具各有優缺點,ms c-runtime library雖然功能上較之外掛程式式的工具要弱,但是它是免費的;performance monitor雖然無法標示出發生問題的**,但是它能檢測出隱式的記憶體洩漏的存在,這是其他兩類工具無能為力的地方。

2樓:匿名使用者

很高興為您解答。

怎樣檢測記憶體洩露 :

檢測記憶體洩漏的關鍵是要能截獲住對分配記憶體和釋放記憶體的函式的呼叫。截獲住這兩個函式,我們就能跟蹤每一塊記憶體的生命週期,比如,每當成功的分配一塊記憶體後,就把它的指標加入乙個全域性的list中;每當釋放一塊記憶體,再把它的指標從list中刪除。這樣,當程式結束的時候,list中剩餘的指標就是指向那些沒有被釋放的記憶體。

這裡只是簡單的描述了檢測記憶體洩漏的基本原理,詳細的演算法可以參見steve maguire的<>。

如果要檢測堆記憶體的洩漏,那麼需要截獲住malloc/realloc/free和new/delete就可以了(其實new/delete最終也是用malloc/free的,所以只要截獲前面一組即可)。對於其他的洩漏,可以採用類似的方法,截獲住相應的分配和釋放函式。比如,要檢測bstr的洩漏,就需要截獲sysallocstring/sysfreestring;要檢測hmenu的洩漏,就需要截獲createmenu/ destroymenu。

(有的資源的分配函式有多個,釋放函式只有乙個,比如,sysallocstringlen也可以用來分配bstr,這時就需要截獲多個分配函式)

在windows平台下,檢測記憶體洩漏的工具常用的一般有三種,ms c-runtime library內建的檢測功能;外掛程式式的檢測工具,諸如,purify,boundschecker等;利用windows nt自帶的performance monitor。這三種工具各有優缺點,ms c-runtime library雖然功能上較之外掛程式式的工具要弱,但是它是免費的;performance monitor雖然無法標示出發生問題的**,但是它能檢測出隱式的記憶體洩漏的存在,這是其他兩類工具無能為力的地方。

軟體測試如何入門,怎麼自學軟體測試?

家裡條件不好不代表就一定不能參見學習啊,自學不是不可以,但是由於在我國開發人員待遇普遍高於測試人員,因此能寫 的幾乎都去做開發了,而很多人則是因為做不了開發或者不能從事其它工作才 被迫 從事測試工作 就像樓主這樣的情況 最終的結果則是很多測試人員只能從事相對簡單的功能測試,能力強一點的則可以借助測試...

中國軟體測試發展前景如何,軟體測試未來發展前景如何?

現在從事測試的工作人員最擔心的就是轉行問題!都說測試年齡大了就不能再幹了,或者就算你想幹,公司也不要你了,而轉行又是非常麻煩的,糾結啊!現在學習測試就好比十年前學習開發一樣,目前測試人才缺口大,從事測試的人不多,可提公升的空間也很大。同時隨著軟體行業的發展,測試成為不可缺少的核心專案團隊,當測試行業...

怎樣做好軟體測試,如何做好軟體測試工作

首先我們需要了解軟體的測試要求,同時學會如何更好的學習。更為詳細 1.需要技術知識和深奧的分析能力建立極其複雜的測試。每個軟體都有不同的特性。我們需要依靠專業的技術知識和深奧的分析能力去解決複雜的軟體運算問題。並做好測試。2.擁有學習能力。因為測試員可能會被要求在很短的週期內從有限認識產品到掌控該產...

軟體測試發展前景如何,軟體測試未來發展前景如何?

軟體測試行業的發展前景 1 人才缺口大 由於我國企業對軟體測試技術的認知較晚,因此這方面的專業技術人才在國內還很稀缺。據調查顯示,目前國內軟體測試人才缺口已達到30萬,中國軟體業每年新增約20萬測試崗位就業機會,但是企業 學校培養出的軟體測試人才不足需求量的1 10,並且需求與供給間的差距仍在進一步...

在軟體測試中如何搭建測試環境,面試問到軟體測試中怎麼搭建測試環境

首先需要知道linux的登陸賬號和密碼 然後使用putty或者其他登陸軟體登陸linux機器使用ftp命令將軟體上傳到linux中 最後用rpm命令安裝軟體 聽您這提問,估計您是沒做過測試吧。什麼是測試環境呢?大白話講就是可以基本準確的將測試用例執行出來,並且結果是有參考意義的那麼個環境 這前題是你...