valgrind的說明使用和原理

2021-09-07 09:32:42 字數 459 閱讀 1053

編譯

#gcc -g -o test test.c

記憶體檢查

#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./test

memcheck 能夠檢測出記憶體問題,關鍵在於其建立了兩個全域性表。

valid-value 表:

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

valid-address 表

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

檢測原理:

Valgrind 使用簡單說明

valgrind能做什麼?記憶體使用檢測,包括 記憶體洩漏 非法記憶體訪問 未初始化變數使用 重複釋放記憶體 多執行緒競爭 檢測 死鎖 檢測競爭 valgrind還能做什麼?效能分析 cachegrind cg annotate 使用方法 callgrind callgrind annotate k...

Valgrind工具的使用

本文參考自 一 valgrind介紹 valgrind是執行在linux上一套基於 技術的程式除錯和分析工具,它的主要作者是獲得過google o reilly開源大獎的julian seward,它包含乙個核心 乙個軟體合成的cpu,和一系列的小工具,每個工具都可以完成一項任務 除錯,分析,或測試...

valgrind工具的使用

valgrind是一款用於記憶體除錯 記憶體洩漏檢測以及效能分析 檢測線程錯誤的軟體開發工具。valgrind 是執行在linux 上的多用途 剖析和記憶體除錯軟體。主要包括memcheck callgrind cachegrind 等工具,每個工具都能完成一項任務除錯 檢測或分析。可以檢測記憶體洩...