我一直在我的Ubuntu机器上快乐地编码。这是一台配置良好的机器,有足够的RAM。我正在编写和运行单元测试时,处理着4个新类。在某个时刻,我注意到,尽管单元测试完成得很好,但代码覆盖率并没有。
在“生成代码覆盖率报告...等”消息之后,我会得到一个消息,指出zend_mm_heap已损坏。我尝试了一些修复方法,包括:在我的php.ini (apache2和cli都设置为output_buffering = On
),以及从我的代码中删除对unset()
的调用。(我在SO上读到这些修复可能是必需的)
现在,不管我做什么,我似乎都在zend_mm... 错误和段错误(core dump)错误之间交替。我注释掉测试,直到我缩小到认为是引起问题的测试,并在那里进行一些更改,直到我获得干净的运行。然后我会取消注释所有测试,只发现故障仍然发生。
有什么想法吗?我可以使用哪些工具或方法来收集更多信息?
我正在使用PHP_CodeCoverage 1.2.6、PHP 5.3.10-1ubuntu3.5、PHPUnit 3.7.9。
编辑:
顺便说一句,我找不到任何核心转储文件。我已经从我的物理磁盘的根目录开始搜索,但没有找到。我已经阅读了core的手册条目,包括不创建文件的核心转储的可能原因,但我不认为这些情况适用。
gdb php
,然后输入run /usr/bin/phpunit
。当phpunit崩溃时,请输入bt
。更多信息请参见http://www.ofb.net/gnu/gdb/gdb_42.html。 - Blake Fitzgerald