如何在php / libc中调试分段错误?



我正在通过SSH在Ubuntu VM中运行PHP CLI命令。问题是某些命令已开始导致分段错误。

奇怪的是,它仅在通过 SSH 运行命令时才会发生。如果我直接在 VM 中运行它,则没有问题。此外,它不会在运行同一 VM 的另一台计算机上发生。

当我运行 PHP 命令(通过主机的 SSH )时,我在 VM 上的日志中看到的唯一内容是:

3 月 22 日 14:53:00 本地内核: [ 1868.863475] php[4967]:7FF60c200000 处的段错误 IP 00007ff6202b284e sp 00007ffce7f19448 libc-2.23.so 中的错误 4[7ff620213000+1c0000]

这似乎表明问题实际上不在于 PHP,而在于标准库。如果是这种情况,我该如何进行调试,和/或我应该如何提交错误报告?

详细信息(如果相关):

我的主机也是 Ubuntu,VM 是使用 beet/box base box 的 DrupalVM。我实际运行的命令是 blt setup(见 https://github/acquia/blt),它通过 SSH 在 VM 内调用 drush cex。

正是这个 drush cex 命令最近开始导致 seg 错误。

第一个选项:

strace mycommand

。并观察会发生什么

第二种选择

gdb mycommand

。并逐步完成它

第三种选择

gather the dumps and analyze them.
- https://stackoverflow.com/questions/17965/how-to-generate-a-core-dump-in-linux-on-a-segmentation-fault

如果你对正在发生的事情有一些直觉,第一个通常就足够了。在你的情况下,这可能是一些愚蠢的事情,比如终端能力谈判或其他一些与核心无关的事情,但你永远不知道......可能很严重。

第二种选择是最复杂的。

相关内容

  • 没有找到相关文章