天天看點

memwatch的使用(二)

日志檔案memwatch.log中包含的資訊主要有以下幾點:

<code>*</code><code>  </code>測試日期

<code>*</code><code>  </code>狀态搜集器的資訊

<code>*</code><code>  </code>使用MemWatch的輸出函數或宏(如TRACE等)的資訊。

<code>*</code><code>  </code>MemWatch捕獲的錯誤資訊

<code>*</code><code>  </code>記憶體使用的全局資訊統計,包括四點:

1)配置設定了多少次記憶體 

2)最大記憶體使用量

3)配置設定的記憶體總量 

4)為釋放的記憶體總數

MemWatch捕獲的錯誤記錄在日志檔案中的輸出格式如下:

message: &lt;sequence-number&gt; filename(linenumber), information

mwInit()和mwTerm()是對應的.是以使用了多少次mwInit(),就需要調用多少次

mwTerm()用于終止MemWatch.<code></code>

<code> </code>

如果在流程中捕獲了程式的異常中斷,那麼需要調用mwAbort()而不是

mwTerm()。即使有顯示的調用mwTerm(),mwAbort()也将終止MemWatch。

MemWatch不能確定是線程安全的。如果你碰巧使用Wind32或者你使用了線程,作為2.66,是初步支援線程的。定義WIN32或者MW_PTHREADS以明确支援線程。這會導緻一個全局互斥變量産生,同時當通路全局記憶體鍊時,MemWatch會鎖定互斥變量,但這遠不能證明是線程安全的。

     從MemWatch的使用可以得知,無法用于核心子產品。因為MemWatch自身就使用了應用層的接口,而不是核心接口。但是,對于普通的應用層程式,我認為還是比較有用,并且是開源的,可以自己修改代碼實作;它能友善地查找記憶體洩漏,特别是提供的接口函數簡單易懂,學習掌握很容易,對應用層程式的單元測試會較适用。

繼續閱讀