Credit:Moini[1]
作为一个程序员,我知道我肯定会犯错误——怎么可能不犯错!程序员也是人啊。有的错误能在编码过程中及时发现,而有些却得等到软件测试了才能显露出来。然而,还有一类错误并不能在这两个阶段被解决,这就导致软件不能正常运行,甚至是提前终止。
如果你还没猜出是那种错误,我说的就是和内存相关的错误。手动调试这些错误不仅耗时,而且很难发现并纠正。值得一提的是,这种错误很常见,特别是在用C/C++这类允许手动管理内存[2]的语言编写的软件里。
幸运的是,现在有一些编程工具能够帮你在软件程序中找到这些和内存相关的错误。在这些工具集中,我评估了五款支持Linux的、流行的、自由开源的内存调试器:Dmalloc、ElectricFence、Memcheck、Memwatch以及Mtrace。在日常编码中,我已经用过这五个调试器了,所以这些评估是建立在我的实际体验之上的。
Dmalloc[3]
开发者:GrayWatson
评估版本:5.5.2
支持的Linux版本:所有种类
许可:CC3.0
Dmalloc是GrayWatson开发的一款内存调试工具。它是作为库来实现的,封装了标准内存管理函数如malloc(),calloc(),free()等,使程序员得以检测出有问题的代码。
Dmalloc
如同工具的网页所示,这个调试器提供的特性包括内存泄漏跟踪、重复释放内存doublefree[4]错误跟踪、以及越界写入fence-postwrite[5]检测。其它特性包括报告错误的文件/行号、通用的数据统计记录。
更新内容
5.5.2版本是一个bug修正发行版[6],修复了几个有关构建和安装的问题。
有何优点
Dmalloc最大的优点就是高度可配置性。比如说,你可以配置它以支持C++程序和多线程应用。Dmalloc还提供一个有用的功能:运行时可配置,这表示在Dmalloc执行时,可以轻易地启用或者禁用它提供的一些特性。
你还可以配合GNUProjectDebugger(GDB)[7]来使用Dmalloc,只需要将dmalloc.gdb文件(位于Dmalloc源码包中的contrib子目录里)的内容添加到你的主目录中的.gdbinit文件里即可。
另外一个让我对Dmalloc爱不释手的优点是它有大量的资料文献。前往