記憶體檢查工具

2021-06-17 21:44:22 字數 1342 閱讀 4267

記憶體檢測工具主要用於檢測程式的堆疊錯誤。一般的檢測方法是通過加magic number來表示正確的記憶體資訊。如果magic number被寫壞,那麼就表示記憶體錯亂了。

1編譯選項:

-fstack-protector & -fstack-protector-all

-fstack-protector

在函式的stack上加乙個magic number,如果buffer overflows的話,程式直接退出。

函式開始時加入,退出時檢測。

*** stack smashing detected ***: ./test terminated

2環境變數

malloc_check_檢測堆錯誤。

若將malloc_check_設定為0,則在檢查到錯誤時不作任何提示。

若將malloc_check_設定為1,則在檢查到錯誤時列印一條資訊到標準錯誤輸出。

若將malloc_check_設定為2,則在檢查到錯誤時直接呼叫abort()中止程式。

3 lib :mcheck

在編譯時鏈結 –lmcheck, 會起到和上訴邊境變數相同的效果,不過,mcheck這個lib是執行緒不安全的。

如果出錯,程式直接退出,並列印出:memory clobbered before allocated block

3: mudflap

使用方法:

1:新增編譯選項:-fmudflap

2:新增lib: -lmudflap

3:環境變數export mudflap_options=』

檢查非常嚴格,任何讀寫越界都會報錯。』

4:mtrace:用於檢視記憶體洩露

使用方法:

1.設定環境變數 malloc_trace指定程式輸出log檔案

2.包含mcheck.h檔案

3.程式開始時呼叫 mtrace()

4.執行程式

5.使用mtrace檢視log檔案

5:dmalloc

需要安裝

使用方法:

1:設定環境變數:

在terminal輸入export dmalloc_options=log=logfile, debug=0×3(in bash)/export

2:在原始檔中新增下面的c**:

#include 「dmalloc.h」

值得注意的是:要在每乙個.c檔案裡面新增,而且必須新增在所包含的標頭檔案最後一行!

3編譯選項:-ddmalloc -ddmalloc_func_check

4:lib:-ldmalloc

6 memwatch:

用於檢測記憶體洩露

7:valgrind:

這個資料比較多。

記憶體檢查工具valgrind

valgrind是一套linux下的開放源 的 除錯工具的集合。valgrind由核心以及基於核心的其他除錯工具組成。valgrind包括以下的一些工具 在了解valgrind之前可以了解一下linux程式記憶體空間布局 0指定安裝路徑和生成makefile configure prefix hom...

C 記憶體檢查工具彙總

目錄 gperftools heap checker 1 gperftools heap profile 2 valgrind安裝及使用 c 編譯器安裝 valgrind安裝 valgrind使用 檢查記憶體洩漏 2,將 ltcmalloc加入專案的編譯選項來編譯你的專案得到my binary co...

VLD 記憶體洩漏檢查工具

1.安裝vld 2.5.1 2.配置依賴庫,工程新增路徑。additional include directories soup visual leak detector include additional depandencies soup visual leak detector lib wi...