必威电竞|足球世界杯竞猜平台

valgrind
來源:互聯網

Valgrind(英靈殿)是一款用于內存調試、內存泄漏檢測和性能分析的軟件開發工具。最初由Julian Seward設計,2006年因其在Linux x86平臺上的免費內存調試工具上的貢獻,榮獲第二屆谷歌歐萊禮媒體開放源碼獎。Valgrind遵循GNU通用公共許可證,是一款自由軟件

歷史和發展

Valgrind的名稱是對北歐神話中瓦爾哈拉主入口的參考。在發布之前的開發過程中,該項目被命名為Heimdall;然而,該名稱將與一個安全軟件包沖突。Valgrind的原始作者是Julian Seward,他在2006年因在Valgrind上的工作而獲得了Google-O'Reilly開源獎。其他一些人也做出了重要貢獻,包括Nicholas Nethercote,Bart Van Assche,Florian Krohm,Tom Hughes,Philippe Waroquiers,Mark Wielaard,Paul Floyd,Petar Jovanovic,Carl Love,Cerion Armour-褐色和Ivo Raisr。它被許多基于Linux的項目使用。

功能和工具

Valgrind是一種使用即時編譯技術的虛擬機,它通過動態重新編譯,將程序轉換為中間表示(IR),然后再將IR轉換為機器代碼執行。這種轉換過程允許插入額外的檢查和工具,但也導致性能損失,通常情況下,使用Valgrind運行的代碼速度是正常程序的20%到25%。

Valgrind的默認工具是Memcheck,它在幾乎所有指令周圍插入額外的代碼,用于跟蹤內存的有效性和可尋址性。Memcheck通過自己的內存分配器實現,能夠檢測到多種內存錯誤,包括使用未初始化的內存、釋放內存后的讀寫操作、越界訪問以及內存泄漏。然而,Memcheck在運行時會導致程序速度減慢20-30倍,并增加內存使用。

支持的平臺

Valgrind最初是為x86架構上的Linux設計的,但隨著版本的更新,支持的平臺已經擴展。截至版本3.4.0,Valgrind支持x86、x86-64和PowerPC上的Linux。在版本3.6.0中添加了對ARMv7的Linux支持,版本3.11.0中添加了對Solaris的支持,版本3.5.0中添加了對OS X的支持,版本3.18.0中添加了對FreeBSD x86和amd64的支持。從版本3.7.0開始,添加了對ARM/Android平臺的支持。自版本3.9.0以來,支持Linux上的MIPS64小端和大端,MIPS32上的MIPS DSP ASE,s390x十進制浮點指令,功率8(Power ISA 2.07)指令,英特爾 AVX2指令,Intel事務同步擴展,包括RTM和HLE,以及對POWER上的硬件事務內存的初步支持。

Memcheck的局限性

Memcheck無法檢測所有涉及訪問堆棧分配數據的錯誤,這一點尤為重要,因為某些類型的堆棧錯誤會使軟件容易受到經典的堆棧溢出攻擊的影響。盡管Memcheck能夠檢測到多種內存錯誤,但它在檢測靜態或堆棧分配數據使用中的邊界錯誤方面存在局限性。

參考資料 >

生活家百科家居網