GNU检查器

GNU检查程序包已经退役,因为瓦尔格林做得更好积极维护。下面为考古学家保留了旧主页。


Checker是一个在运行时查找内存错误的工具。主要功能是在程序读取未初始化的变量或内存区域,或当程序访问未分配的内存区域。

Checker的Malloc库非常健壮,但速度较慢比通常的GNU Malloc。检查器在以下情况下发出警告:

Checker的Malloc将避免重用释放的块立即;由于一些额外的数字,块的重用被延迟共个免费电话。这是为了很快捕获对块的访问在它被释放之后。

Checker实现了一个垃圾检测器,可以在您的程序,通过诸如GDB之类的调试器,或在退出程序时。垃圾检测器显示所有内存泄漏以及调用的函数malloc公司.

例子

这是一个伪造的文件例子。c(c):

#包括<stdlib.h>整数主(){char*区域=malloc(20);char*ptr=空;整数i;字符c;c=区域[1];/*错误:读取未初始化的字符*/c=区域[-2];/*错误:在区域之前读取*/区域[25]=“”;/*错误:在区域之后写入*/*ptr=2;/*错误:使用NULL指针,必须生成核心*/}

要使用Checker编译此示例,只需使用棋盘格而不是海湾合作委员会:

%checkergcc-o示例。c(c)

接下来,运行示例:

% ./例子

执行会产生以下警告:

Checker 0.9(sparc-sun-solaris2.5.1)版权所有(C)1998 Tristan Gingold。Checker是一种内存访问检测器。分发Checker是为了希望它有用,但无任何保证;甚至没有适销性或特定用途的适用性。查看GNU通用公共许可证了解更多详细信息。有关详细信息,请将CHECKEROPTS设置为“--help”来自Checker(pid:04713):`/example”正在运行(1998年1月18日星期日14:56:49)从检查器(pid:04713):(ruh)读取块中未初始化的字节。读取堆(sbrk)内地址0x000398a1处的1个字节时。1个字节组成一个块(开始:0x398a0,长度:20,mdesc:0x0)。块是从以下位置分配的:pc=0x00022f1c,单位:chkr_malloc at/存根/存根-分配c:51pc=0x0001339c,位于/示例.c:7启动时pc=0x000155f0/config/sparc/solaris2/startup.c:148pc=0x00013298 in*未知*at*未知*:0堆栈帧为:pc=0x000133f4在/示例.c:12在..启动时,pc=0x000155f0/config/sparc/solaris2/startup.c:148pc=0x00013298 in*未知*at*未知*:0来自Checker(pid:04713):堆中的(bvh)块边界冲突。读取堆(sbrk)内地址0x0003989e处的1个字节时。块前2个字节(开始:0x398a0,长度:20,mdesc:0x0)。块是从以下位置分配的:pc=0x00022f1c,单位:chkr_malloc at/存根/存根-分配c:51pc=0x0001339c,位于/示例.c:7启动时pc=0x000155f0/config/sparc/solaris2/startup.c:148pc=0x00013298 in*未知*at*未知*:0堆栈帧为:pc=0x00013434在/示例:c:13启动时pc=0x000155f0/config/sparc/solaris2/startup.c:148pc=0x00013298 in*未知*at*未知*:0来自Checker(pid:04713):堆中的(bvh)块边界冲突。在堆(sbrk)内的地址0x000398b9处写入1个字节时。块后5个字节(开始:0x398a0,长度:20,mdesc:0x0)。块是从以下位置分配的:pc=0x00022f1c,位于..的chkr_malloc中/存根/存根-分配c:51pc=0x0001339c,位于/示例.c:7启动时pc=0x000155f0/config/sparc/solaris2/startup.c:148pc=0x00013298 in*未知*at*未知*:0堆栈帧为:pc=0x0001345c在…处/示例:c:14启动时pc=0x000155f0/config/sparc/solaris2/startup.c:148pc=0x00013298 in*未知*at*未知*:0来自检查器(pid:04713):(nza)已寻址空区。在地址0x00000000写入1个字节时,在NULL区域内。您可能延迟了空指针。这将导致分段故障。堆栈帧为:pc=0x0001347c,位于/示例:c:15启动时pc=0x000155f0/config/sparc/solaris2/startup.c:148pc=0x00013298 in*未知*at*未知*:0来自Checker(pid:04713):(sig)信号。接收信号11(SEGV):(默认操作:终止核心)。分段故障

当前状态

此时,当前版本0.9.4可在上获得alpha.gnu.org/gnu/。它已被移植到

你需要一般合同条款-2.8.1使用Checker。