C 記憶體檢查工具彙總

2021-10-16 09:55:47 字數 1608 閱讀 2416

目錄

gperftools-heap_checker[1]

gperftools-heap_profile[2]

valgrind安裝及使用

c++編譯器安裝

valgrind安裝

valgrind使用

檢查記憶體洩漏

2,將-ltcmalloc加入專案的編譯選項來編譯你的專案得到my_binary_compiled_with_tcmalloc

-l /usr/lib64 -ltcmalloc

3,把so檔案放到你專案執行的地方。

env ld_preload="/usr/lib/libtcmalloc.so"

env heapcheck=normal /usr/local/bin/my_binary_compiled_with_tcmalloc 

4,注意:如果你的專案是一直執行的狀態,需要合理安排主程序的退出,不然會crash。

5,結果分析

pprof --pdf my_binary_compiled_with_tcmalloc  /tmp/mybin.hprof > /tmp/mybin.hprof.pdf

生成的pdf裡,黑底是洩漏了,白底是沒有洩漏。

檢查不同函式的記憶體佔比,類似cpu profiler

1,2 同heap checker的前2步

3,執行,這樣預設每1m會生成乙個檔案,測試發現就算加了signal還是會一直生成profile檔案?

env ld_preload="/usr/lib/libtcmalloc.so"

4, 結果分析

pprof --pdf my_binary_compiled_with_tcmalloc  /tmp/mybin.hprof > /tmp/mybin.hprof.pdf

參考link

[1]centos7下安裝c/c++的編譯器gcc和g++,執行了如下兩條命令[1]:

1 yum install gcc

2 yum install gcc-c++ libstdc++-devel (正確)

1. tar -jxvf valgrind-3.12.0.tar.bz2

2. cd valgrind-3.12.0

3. ./configure --prefix=/home/valgrind/bin [3]

4. 編譯valgrind

make

make install

5. 到這來已經安裝成功了,但還不能直接使用,需要建立乙個軟連線。

cd /usr/bin/

ln -s /home/valgrind/bin/bin/valgrind valgrind

6. 驗證

valgrind -h

1. 使用valgrind檢查記憶體

valgrind --log-file=valgrind.log.1 --leak-check=full --tool=memcheck --error-limit=no --show-reachable=yes ./應用程式 &

執行一段時間後檢視valgrind.log.1,檢視是否有lost記憶體洩漏問題等。

參考link

[1][2]

[3]

記憶體檢查工具

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

記憶體檢查工具valgrind

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

c記憶體洩漏檢查工具 mtrace

專案中出現記憶體洩漏是讓人很頭疼的事情,使用了vargrind效果不明顯,可能因為試用了libuv裡面有太多非同步處理,導致使用vargrind會出現段錯誤。後來發現mtrace,使用還是挺簡單的。mtrace是gnu自帶的庫,因為我的專案是嵌入式開發,使用arm平台,剛開始想交叉編譯mtrace在...