Linux 下幾款程式記憶體洩漏檢查工具

2021-08-25 08:06:27 字數 1674 閱讀 9585

工具描述

valgrind

乙個強大開源的程式檢測工具

mtrace

gnu擴充套件,用來跟蹤malloc,mtrace為記憶體分配函式(malloc,rellaoc,memalign,free)安裝hook函式

dmalloc

用於檢查c/c++記憶體洩漏的工具,即是檢查是否存在程式執行結束還沒有釋放的記憶體,以乙個執行庫發布

memwatch

和dmalloc一樣,它能檢測未釋放的記憶體、同一段記憶體被釋放多次、位址訪問錯誤及不當使用未分配之記憶體區域

mpatrol

乙個跨平台的 c++ 記憶體洩漏檢測器

dbgmem

也是乙個動態庫發布的形式,優點類似dmalloc,但是相比之下,可能特點少了一些

electric fence

不僅僅能夠跟蹤malloc()和free(),同時能夠檢查讀訪問以及寫入,能夠準確指出導致錯誤的指令

memcheck檢測記憶體問題的原理圖:

對於程序的整個位址空間中的每一位元組(byte),都有與之對應的8個bits,對於cpu的每個暫存器,也有乙個與之對應的bit向量。這些bits負責記錄該位元組或者暫存器值是否具有有效 的、已經初始化的值

對於程序整個位址空間中的 麼乙個位元組(byte),還有與 之對應的1bit,負責記錄該位址是否能夠被讀寫。

接下來我主要是介紹valgrind的安裝和使用,關於其他的工具,大家可以自己上網去查閱資料,謝謝配合!

memcheck將記憶體洩露分為兩種,一種是可能的記憶體洩露(possibly lost),另外一種是確定的記憶體洩露(definitely lost)。possibly lost 是指仍然存在某個指標能夠訪問某塊記憶體,但該指標指向的已經不是該記憶體首位址。definitely lost 是指已經不能夠訪問這塊記憶體。而definitely lost又分為兩種:直接的(direct)和間接的(indirect)。直接和間接的區別就是,直接是沒有任何指標指向該記憶體,間接是指指向該記憶體的指標都位於記憶體洩露處。在上述的例子中,根節點是directly lost,而其他節點是indirectly lost

Linux 下幾款程式記憶體洩漏檢查工具

工具描述 valgrind 乙個強大開源的程式檢測工具 mtrace gnu擴充套件,用來跟蹤malloc,mtrace為記憶體分配函式 malloc,rellaoc,memalign,free 安裝hook函式 dmalloc 用於檢查c c 記憶體洩漏的工具,即是檢查是否存在程式執行結束還沒有釋...

C C 程式記憶體洩漏檢測

c c 程式記憶體洩漏檢測 摺疊 1.包含標頭檔案和定義 define crtdbg map alloc include include 如果定義了 crtdbg map alloc,列印出來的是檔名和行數等更加直觀的資訊。2.方法一 在程式入口寫幾個語句 int tmpflag crtsetdbg...

C 程式記憶體洩漏檢查

一 在windows平台上面 以前我都是用purify,因為沒有正版的,很是麻煩,後來我開始用windows自帶的umdh,也很好用 摘要一下步驟如下 注 得先把gflags和umdh的路徑加入到path中,預設為 c program files x86 windows kits 8.1 debug...