- 1.1。Valgrind概述 1.2。如何浏覽本手冊
1.1。Valgrind概述
Valgrind是建構動态分析工具的工具架構。它配有一組工具,每個工具都執行某種調試,分析或類似任務,可以幫助您改程序式。Valgrind的架構是子產品化的,是以可以輕松建立新工具,而不會影響現有的結構。
标準提供了許多有用的工具。
- Memcheck是一個記憶體錯誤檢測器。它可以幫助您使程式,特别是C和C ++編寫的程式更正确。
- Cachegrind是一個緩存和分支預測分析器。它可以幫助您使程式運作速度更快。
- Callgrind是生成緩存分析器的調用圖。它與Cachegrind有一些重疊,但也收集了Cachegrind沒有的一些資訊。
- Helgrind是一個線程錯誤檢測器。它可以幫助您使您的多線程程式更正确。
- DRD也是線程錯誤檢測器。它與Helgrind類似,但使用不同的分析技術,是以可能會發現不同的問題。
- Massif是一個堆分析器。它可以幫助您使程式使用更少的記憶體。
- DHAT是一種不同類型的堆分析器。它有助于您了解塊生命周期,塊使用率和布局效率低下的問題。
- SGcheck是一個可以檢測堆棧和全局數組超出的實驗工具。它的功能與Memcheck的功能相輔相成:SGcheck發現Memcheck不能出現問題,反之亦然。
- BBV是一個實驗性SimPoint基本塊向量生成器。對于進行計算機體系結構研究和開發的人來說,是有用
還有一些對大多數使用者無用的小工具: Lackey是一個示例工具,用于說明一些工具基礎知識; 和Nulgrind是最小Valgrind的工具,做任何分析或儀器,并僅用于測試目的。
Valgrind與CPU和作業系統的細節密切相關,在較小程度上與編譯器和基本C庫相關。盡管如此,它還支援一些廣泛使用的平台,詳見http://www.valgrind.org/。
Valgrind是通過标準的Unix建
./configure
,
make
,
make install
的過程; 完整的詳細資訊在發行版的README檔案中給出。
Valgrind是在許可下的GNU通用公共許可證,版本2,
valgrind/*.h
您可能希望在代碼中包含頭檔案(例如
valgrind.h
,
memcheck.h
,
helgrind.h
等)下BSD風格的許可證下釋出的,是以你可能在包括它們的代碼,而不用擔心許可證沖突。一些PThreads測試用例
pth_*.c
,摘自O'Reilly&Associates,Inc.出版的Bradford Nichols,Dick Buttlar&Jacqueline Proulx Farrell,ISBN 1-56592-115-1的“Pthreads Programming”
如果您向Valgrind提供代碼,請確定您的貢獻被許可為“GPLv2”,或(作為您選擇)的任何更高版本。這是為了讓将來許可證容易更新到GPLv3的可能性。如果要修改VEX子目錄中的代碼,請參閱發行版中的VEX / HACKING.README檔案。
1.2。如何浏覽本手冊
本手冊的結構反映了Valgrind本身的結構。首先,我們描述Valgrind核心,如何使用它,以及它支援的選項。然後,每個工具在本手冊中都有自己的章節。您隻需要閱讀核心文檔以及實際使用的工具,盡管您至少可以了解所有工具的用途,但您可能會發現有用。如果您是新來的,您可能需要運作Memcheck工具,您可能會發現“Valgrind快速入門指南”很有用。
請注意核心了解一些指令行選項,并且這些工具有自己的選擇,他們知道。這意味着沒有描述接受的所有選項的中心位置 - 您必須閱讀Valgrind的核心和您要使用的工具的選項文檔 。