2.3
分析日誌檔案
日誌檔案memwatch.log中包含的資訊主要有以下幾點:
*
測試日期
*
狀態蒐集器
的資訊
*
使用
memwatch
的輸出函式或巨集(如trace等)的資訊。
*
memwatch
捕獲的錯誤資訊
*
記憶體使用的全域性資訊統計,包括四點:
1)分配了多少次記憶體
2)最大記憶體使用量
3)分配的記憶體總量
4)為釋放的記憶體總數
memwatch
捕獲的錯誤記錄在
日誌檔案中的輸出格式如下:
message: filename(linenumber), information
2.4
注意事項
mwinit()
和mwterm()是對應的.所以使用了多少次mwinit(),就需要呼叫多少次
mwterm()
用於終止memwatch.
如果在流程中捕獲了程式的異常中斷,那麼需要呼叫mwabort()而不是
mwterm()
。即使有顯示的呼叫mwterm(),mwabort()也將終止memwatch。
memwatch
不能確保是執行緒安全的。
如果你碰巧使用wind32或者你使用了執行緒,作為2.66,是初步支援執行緒的。定義win32或者mw_pthreads以明確支援執行緒。這會導致乙個全域性互斥變數產生,同時當訪問全域性記憶體鏈時,
memwatch
會鎖定互斥變數,但這遠不能證明是執行緒安全的。
3 結論 從
memwatch
的使用可以得知,無法用於核心模組。因為memwatch自身就使用了應用層的介面,而不是核心介面。但是,對於普通的應用層程式,我認為還是比較有用,並且是開源的,可以自己修改**實現;它能方便地查詢記憶體洩漏,特別是提供的介面函式簡單易懂,學習掌握很容易,對應用層程式的單元測試會較適用。
使用memwatch跟蹤linux記憶體洩漏
參考 根據log可以查詢出申請了卻沒有釋放記憶體的行號。一 簡介 memwatch可以跟蹤程式中的記憶體洩漏和錯誤,能檢測雙重釋放 double free 錯誤釋放 erroneousfree 沒有釋放的記憶體 unfreed memory 溢位 overflow 下溢 underflow 等。解壓...
Moblin KVM的使用(二)
我們使用kvm作為moblin的開發環境的時候,碰到來乙個問題 即kvm模擬環境的大小,即虛擬大小是有效的,可能不滿足我們的需求,同時我們在上面的很多開發的 並不希望納入製作usbimg中,我們也不可能為了製作小容量的img而每次都將開發 移走,下面記錄我的處理過程。已有的raw檔案 rw r r ...
Handler的使用(二)
一 handler與執行緒 handler在預設情況下,實際上它和呼叫它的activity處於同乙個執行緒。例如在handler的使用 一 示例1當中,雖然宣告了執行緒物件,但是在實際呼叫當中它並沒有呼叫執行緒的start 方法,而是直接呼叫當前執行緒的run 方法。public class han...