如何诊断这些PHP-Code-Coverage分段和zend_mm_heap损坏的错误

Kim*_*nce 10 php code-coverage segmentation-fault

我很乐意在我的Ubuntu机器上编码.这是一台拥有充足内存的强大机器.我正在研究4个新课程,编写和运行单元测试.在某些时候我注意到,虽然单元测试完成得很好,但代码覆盖却没有.

在消息"生成代码覆盖率报告...等..."之后,我会收到一条消息,指出zend_mm_heap已损坏.我尝试了一些修复,包括:设置output_buffering = On我的php.ini(apache2和cli),以及unset()从我的代码中删除调用.(我读过这些固定可能是必需的).

现在,无论我做什么,我似乎在zend_mm ...错误和Segmentation fault(核心转储)错误之间交替.我评论测试,直到我缩小我认为导致问题的那个,并在那里做一些改变,直到我得到一个干净的运行.然后我将取消注释所有测试,只是发现故障仍然存在.

有任何想法吗?我可以使用哪些工具或方法来收集更多信息?

我使用的是PHP_CodeCoverage 1.2.6,PHP 5.3.10-1ubuntu3.5,PHPUnit 3.7.9.

编辑:

顺便说一句,我找不到任何核心转储文件.从我的物理磁盘的根目录搜索没有运气.我已经阅读了关于核心的man条目,包括核心转储没有创建文件的可能原因,但我认为这些都不适用.

Bla*_*ald 23

我最近遇到了同样的问题.它似乎是PHP垃圾收集的问题.在phpunit运行期间禁用垃圾收集解决了我的问题.

加:

zend.enable_gc=0 
Run Code Online (Sandbox Code Playgroud)

到您的php.ini文件或从命令行:

phpunit -d zend.enable_gc=0
Run Code Online (Sandbox Code Playgroud)

  • 获取更多信息,你可以尝试gdb backtrace .gdb php`.从gdb中,`run/usr/bin/phpunit`.当phpunit segfaults输入`bt`时.更多信息,请访问http://www.ofb.net/gnu/gdb/gdb_42.html (2认同)