php - PHP 中的段错误(核心已转储)

标签 php

好的,我在 Ubuntu 的命令行上运行一个 PHP 应用程序,它以“段错误(核心已转储)”结束。

我该如何从这里调试它?我很确定没有内存泄漏,因为我已经用 get_memory_usage() 检查过了。

编辑:好的,正如 Brendan 和 Ulricht 所解释的那样,我尝试了 gdb。这根本不是我的环境,对于即将到来的新手问题,我深表歉意。

我在 gdb 下运行我的代码并得到了段错误。这是前 22 行。

(gdb) bt
#0  0x00000000006f5d36 in ?? ()
#1  0x00000000006f7625 in ?? ()
#2  0x00000000006f7b68 in zend_parse_parameters ()
#3  0x0000000000610584 in zif_array_rand ()
#4  0x00000000006dd9bb in dtrace_execute_internal ()
#5  0x000000000079da15 in ?? ()
#6  0x0000000000717748 in execute_ex ()
#7  0x00000000006dd8b9 in dtrace_execute_ex ()
#8  0x000000000079e060 in ?? ()
#9  0x0000000000717748 in execute_ex ()
#10 0x00000000006dd8b9 in dtrace_execute_ex ()
#11 0x000000000079e060 in ?? ()
#12 0x0000000000717748 in execute_ex ()
#13 0x00000000006dd8b9 in dtrace_execute_ex ()
#14 0x000000000079e060 in ?? ()
#15 0x0000000000717748 in execute_ex ()
#16 0x00000000006dd8b9 in dtrace_execute_ex ()
#17 0x000000000079e060 in ?? ()
#18 0x0000000000717748 in execute_ex ()
#19 0x00000000006dd8b9 in dtrace_execute_ex ()
#20 0x000000000079e060 in ?? ()
#21 0x0000000000717748 in execute_ex ()
#22 0x00000000006dd8b9 in dtrace_execute_ex ()

根据 https://bugs.php.net/bugs-generating-backtrace.php ,我应该得到“执行”电话,而不是“execute_ex”。一样吗?

无论如何,以下命令不会返回函数名称(在完成第 6 帧之后):

print (char *)(executor_globals.function_state_ptr->function)->common.function_name
Attempt to extract a component of a value that is not a structure.

Edit2:我很高兴知道为什么反对票。我认为这是一个有效的问题,我还没有为 PHP 找到类似的问题。如果有,您可以随意发表评论。

最佳答案

有几件事可以查明错误,但首先是在 gdb 中运行可执行文件:

> gdb /usr/bin/php
....
(gdb) run path/to/script

请注意,您还可以将转储的核心加载到 gdb 中。用于找出可能导致问题的原因的其他工具是 strace 和 valgrind。

关于php - PHP 中的段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26316093/

相关文章:

php - 如何显示 UNIQUE KEY 的错误

php - 如何使用正则表达式从数组中找到匹配的键

javascript - 在发送数据之前验证ajax提交post方法

php - 带有 WordPress 的 Windows 上的目录分隔符不正确

php - 查询中的 Symfony 1 Doctrine 查询

php - 将数据插入MySQL数据库

javascript - PHP post提交未提交

php - 有关如何以编程方式为每个项目生成唯一 key 代码的问题?

php - 如何在 foreach 循环中使用 phpQuery 从表中获取数据

php - 沙盒商家 ID Paypal