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能够检测到多种内存错误,但它在检测静态或堆栈分配数据使用中的边界错误方面存在局限性。
参考资料

Warning: Invalid argument supplied for foreach() in /www/wwwroot/newbaike1.com/id.php on line 362
目录
概述
历史和发展
功能和工具
支持的平台
Memcheck的局限性
参考资料