php - 如何诊断这些 PHP-Code-Coverage segmentation 和 zend_mm_heap corrupted 错误

标签 php segmentation-fault code-coverage

我一直在我的 Ubuntu 机器上愉快地编码。这是一台具有大量 RAM 的强大机器。我正在研究 4 个新类(class),同时编写和运行单元测试。在某些时候,我注意到,虽然单元测试完成得很好,但代码覆盖率却不是。

在消息“生成代码覆盖率报告...等等”之后,我会收到一条消息说 zend_mm_heap 已损坏。我尝试了一些修复,包括:在我的 php.ini(apache2 和 cli)中设置 output_buffering = On,并从我的代码中删除对 unset() 的调用。 (我继续阅读,因此可能需要修复这些问题)。

现在,无论我做什么,我似乎都在 zend_mm... 错误和段错误(核心转储)错误之间交替。我注释掉测试,直到我缩小我认为导致问题的范围,并在那里进行一些更改,直到我得到一个干净的运行。然后我将取消所有测试的注释,结果发现该错误仍然存​​在。

有什么想法吗?我可以使用什么工具或方法来收集更多信息?

我正在使用 PHP_CodeCoverage 1.2.6、PHP 5.3.10-1ubuntu3.5、PHPUnit 3.7.9。

编辑:

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

最佳答案

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

添加:

zend.enable_gc=0 

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

phpunit -d zend.enable_gc=0

关于php - 如何诊断这些 PHP-Code-Coverage segmentation 和 zend_mm_heap corrupted 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14597468/

相关文章:

objective-c - SIGSEGV 崩溃,没有任何直接跟踪我的应用程序代码

c++ - g++,如何找到出错的地方?

C 2D 字符串数组在其声明的函数之外导致段错误

c# - MS 测试代码覆盖率返回不正确的结果

unit-testing - 如何为 vscode 扩展做 Coverage 导出

PHP 使用准备语句插入查询

PHP 将 csv 加载到 sql 表中仅在授予 @localhost 的所有权限时才有效

javascript - 根据浏览器屏幕大小和媒体查询执行 php 代码

php - 为什么 Zend Lucene 找不到结果,而 Luke 却能找到相同的模糊查询

code-coverage - 声明和决策覆盖范围之间的差异