valgrind是一個開源的內存管理框架,valgrind是用於構建動態分析工具的探測框架,它包括一個工具集,每個工具執行某種類型的調試,分析或類似的任務。valgrind的框架是模塊化的,所以很容易的創建新的工具而不會影響原有的框架。
許多有用的工具被作爲標準而提供。
- Memcheck是一個內存錯誤檢測器。它有助於使你的程序,尤其是那些用C和C++寫的程序,更加準確。
- Cachegrind是一個緩存和分支預測分析器。它有助於使你的程序運行更快。
- Callgrind是一個調用圖緩存生成分析器。它與Cachegrind的功能有重疊,但也收集Cachegrind不收集的一些信息。
- Helgrind是一個線程錯誤檢測器。它有助於使你的多線程程序更加準確。
- DRD也是一個線程錯誤檢測器。它和Helgrind相似,但使用不同的分析技術,所以可能找到不同的問題。
- Massif是一個堆分析器。它有助於使你的程序使用更少的內存。
- DHAT是另一種不同的堆分析器。它有助於理解塊的生命期、塊的使用和佈局的低效等問題。
- SGcheck是一個實驗工具,用來檢測堆和全局數組的溢出。它的功能和Memcheck互補:SGcheck找到Memcheck無法找到的問題,反之亦然。
- BBV是個實驗性質的SimPoint基本塊矢量生成器。它對於進行計算機架構的研究和開發很有用處。
內存檢測:
valgrind --tool=memcheck --leak-check=full ./test;
如果要檢測調用信息,則使用valgrind --tool=callcheck ./test,別的工具使用方法類似。