【问题标题】:Segfaults in Laravel 5.5Laravel 5.5 中的段错误
【发布时间】:2018-02-14 08:07:02
【问题描述】:

我最近在 Laravel 5.5 中启动了一个小项目。我将我的 Homestead 盒子更新到了最新版本。

在编写测试时,如果我拼写错误的断言方法会遇到段错误,我在 github 存储库上创建了一个问题,可以在 https://github.com/laravel/framework/issues/20925 找到该问题

问题现在已经关闭,这是我的错误(asertPushedOn() 而不是assertPushedOn())。

但是我最近遇到了另一个段错误,再次,这是我的错误(尝试 eagerload 时错误命名关系),但问题是,这在 5.5 之前从未发生过。现在,似乎当我把事情搞砸时,我会随机出现段错误。我在日志中找不到任何帮助调试它们的东西(Laravel 日志文件或 nginx 错误日志。

我收到的唯一错误消息是Segmentation fault (core dumped),它什么也没告诉我。

在问题报告中,它提到 xdebug 会转储错误。我有一个laravel homestead xdebug 的谷歌,但只能找到 phpstorm 的资源(我是一个崇高的用户)。

TL;DR:

1) 在 Laravel 5.5 中更新了宅基地框,如果我在某个地方搞砸了,我现在会遇到 php 段错误。这是 5.5 / 宅基地的变化吗?

2) 如何启用 xdebug(这实际上有助于调试段错误)?

3) 如果 xdebug 不是答案,我该如何停止获取或从 segfaults 获取更多默认调试信息?

正如我创建的问题中所述,我对段错误了解不多。

如果您需要任何进一步的信息,请告诉我

编辑

我设法通过以下方式启用 xdebug:

sudo phpenmod xdebug
sudo service nginx restart
php -m

但我无法重现段错误(启用和未启用 xdebug),这让段错误让我更加困惑。

【问题讨论】:

  • 你可能有一个递归函数会耗尽你所有的内存。所以你的内存用完了,它会给你那个错误。你能分享你的代码吗?
  • 我假设递归,但我找不到任何。不可能共享代码,因为我认为这可能部分是由于框架 - 但只能通过我的错误实现。这只是过去,我确信大型递归已经被 xdebug 或 Homestead 中的其他一些进程捕获并出错(这至少给了我一些关于从哪里开始调试的信息)。

标签: php laravel segmentation-fault laravel-5.5


【解决方案1】:

因此,虽然我无法重现原始段错误,但在未启用 xdebug 时确实发生了另一个错误。

当我启用 xdebug 时:

sudo phpenmod xdebug
sudo service nginx restart

然后重新运行给我段错误的脚本,我成功地得到了带有文件名和行号的递归错误来解决它。

【讨论】:

    猜你喜欢
    • 2018-09-04
    • 2018-02-13
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多