我正在通过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
如果你对正在发生的事情有一些直觉,第一个通常就足够了。在你的情况下,这可能是一些愚蠢的事情,比如终端能力谈判或其他一些与核心无关的事情,但你永远不知道......可能很严重。
第二种选择是最复杂的。