記憶體檢測工具主要用於檢測程式的堆疊錯誤。一般的檢測方法是通過加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...