评论:Linux的编码5内存调试
作为一个程序员,我知道,我倾向于犯错误 - 为什么不呢?即使程序员是人类。在代码编译检测到一些错误,而其他软件测试过程中被抓到。然而,一类错误的存在,通常不会得到在任这几个阶段的检测,并且可能导致软件行为异常 - 或更糟的是,过早终止。
如果你还没有猜对了,我说的是内存相关的错误。手动调试这些错误可能是不仅费时而且很难发现和纠正。此外,值得一提的是,这些错误是很常见,尤其是在软件写的像C和C ++,它被设计为具有手动内存管理使用的编程语言。
[延伸阅读:评论:与这6个功能强大的工具,停止内部攻击]
值得庆幸的是,一些编程工具存在,可以帮助您找到您的软件程序内存错误。在这篇综述,我估计五款热门,自由和开放源码的内存调试器可用于Linux的:Dmalloc,电围栏,的Memcheck,MEMWATCH与mtrace。我用所有五个在我的一天到一天的节目,所以这些评论是基于实践经验。
Dmalloc
开发商:灰色沃森
修订版本:5.5.2
Linux支持:所有口味
许可:知识共享署名 - 相同方式共享3.0许可协议
Dmalloc是灰色沃森开发的内存调试工具。它是作为一个库,提供包装器标准存储器管理功能,如的malloc(),释放calloc(),游离()和多,从而使程序员来检测有问题的代码。
由于该工具的网页上列出的调试功能提供包括内存泄漏跟踪,双重释放错误跟踪和栅栏后写的检测。其他功能还包括文件/行号报告,以及统计数据的一般记录。
什么是新的
5.5.2版本主要包含修正了几个版本的Bug修正版本和安装的问题。
有什么好的呢
关于Dmalloc最好的部分是,它是非常可配置的。例如,您可以将其配置为包括C ++程序的支持,以及多线程应用程序。它提供了一个有用的功能是运行时可配置性,这意味着你可以很容易地启用/禁用,而它正在执行的工具提供的功能。
您还可以使用Dmalloc与GNU项目调试器(GDB) - 只需添加dmalloc.gdb文件(位于Dmalloc的源码包放在contrib子目录中)到.gdbinit中的内容,在你的主目录。
我真的很喜欢Dmalloc另一件事是它的大量文档。只是头部到在其官方网站的文档部分,你会得到一切从如何下载,安装,运行和使用图书馆它提供的功能的详细说明和它产生的输出文件的说明。还有包含解决一些常见问题的一个部分。
其他注意事项
像命令mtrace,Dmalloc要求程序员修改他们的程序的源代码。在这种情况下,你可以,最起码,要添加的dmalloc.h头,因为它允许该工具来报告说,产生问题的呼叫,东西,因为它可以节省时间,同时调试,这是非常有用的文件/行号。
此外,Dmalloc库,这是产生编译包后,需要与你的程序链接,而该方案正在编制。
然而,有些复杂的事情是,你还需要设置一个环境变量,被称为DMALLOC_OPTION,该调试工具使用配置内存调试功能 - 以及输出文件的位置 - 运行。虽然你可以手动分配一个值的环境变量,初学者可能会发现,过程有点困难,因为该Dmalloc功能要启用被列为该值的一部分,实际上是代表他们各自的十六进制值的总和 - 你可以阅读更多关于它在这里。
一个简单的方法来设置环境变量是使用Dmalloc应用程序,这是专为刚刚这一目的。
底线
Dmalloc的真正实力在于它提供了可配置的选项。这也是高度可移植的,有被成功地移植到许多操作系统,包括AIX,BSD / OS,DG / UX,免费/净/ OpenBSD系统,GNU /赫德,HPUX,IRIX的Linux,MS-DOG,接下来,OSF,SCO ,的Solaris,SunOS中,的Ultrix,UnixWare的,甚至UNICOS(在Cray T3E)。虽然工具有一点与它相关的学习曲线,它提供的功能是值得的。
电防护网
开发商:布鲁斯·佩伦斯
修订版本:2.2.3
Linux支持:所有口味
许可:GNU GPL(第2版)
电围栏是由布鲁斯·佩伦斯开发的内存调试工具。它是在一个该程序需要连接到,和能够检测的分配在堆存储器超支库的形式来实现),以及那些已经被释放的存储器存取。