PHP中的分段错误(内核转储)
好的,我在Ubuntu的命令行上运行一个PHP应用程序,它以“分段错误(内核转储)”结束 如何从这里调试它?我非常确定没有内存泄漏,因为我已经用get\u memory\u usage()检查过了 编辑:好的,正如Brendan和Ulricht所解释的,我试过gdb。那根本不是我的环境,所以很抱歉有新来的问题 我在gdb下运行了我的代码,得到了错误。这里是前22行PHP中的分段错误(内核转储),php,Php,好的,我在Ubuntu的命令行上运行一个PHP应用程序,它以“分段错误(内核转储)”结束 如何从这里调试它?我非常确定没有内存泄漏,因为我已经用get\u memory\u usage()检查过了 编辑:好的,正如Brendan和Ulricht所解释的,我试过gdb。那根本不是我的环境,所以很抱歉有新来的问题 我在gdb下运行了我的代码,得到了错误。这里是前22行 (gdb) bt #0 0x00000000006f5d36 in ?? () #1 0x00000000006f7625 in
(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 ()
根据,我应该得到“execute”调用,而不是“execute_ex”。同样的事情
以下命令无论如何不会返回函数名(在完成第6帧之后):
Edit2:我很想知道为什么会投反对票。我认为这是一个有效的问题,我还没有发现类似的PHP问题。如果有,您可以自由发表评论。有几件事可以指出错误,但第一件事是在gdb中运行可执行文件:
> gdb /usr/bin/php
....
(gdb) run path/to/script
注意,您还可以将转储的内核加载到gdb中。找出问题原因的其他工具是strace和valgrind。这两者根本没有关系。那个家伙知道他因为mysql而有一个segfault,而我有一个segfault,我正试图找出它的来源。@BrendanAshworth:谢谢,我在我原来的帖子中回复了。谢谢,我在我原来的帖子中回复了。
> gdb /usr/bin/php
....
(gdb) run path/to/script