【问题标题】:How to trigger a core dump in php?如何在php中触发核心转储?
【发布时间】:2015-04-27 14:36:14
【问题描述】:

我的 Web 应用程序偶尔(但很少)会引发特定异常。我不知道它为什么会发生,而且我无法重现它,或者看到它发生在我的生产服务器之外的任何地方。因此,我希望能够在发生特定异常时转储 php 的整个当前状态,以便跟踪其执行情况并找出触发它的原因。

我不能使用 xdebug,因为这是一个生产服务器,并且 xebug 会减慢执行速度(这已经足够慢了)。那么,如何让 php 转储其当前状态,以便稍后检查呢?

我唯一能想到的就是使用execkill当前进程,但这看起来很乱,无论如何如果我可以转储php状态会更好,而不是阿帕奇州。我什至不知道这是否可能......

【问题讨论】:

  • 如果这真的是异常而不是崩溃,您可以声明一个全局异常处理程序来收集堆栈跟踪等。
  • @Ja͢ck 是的,但是我如何获得其余的状态?即内存的内容,以及堆栈上层范围内的变量?

标签: php coredump


【解决方案1】:

debug_backtrace() 提供所有请求的参数和函数,以便您查看它的路径和调用它的名称。

您可以将其保存到文件中并逐个查看

http://php.net/manual/en/function.debug-backtrace.php

【讨论】:

  • 是的,但它没有给出内存的内容,特别是它没有给出堆栈跟踪高处范围内的变量值。知道如何获得它们吗?
  • 为什么变量没有传下来?如果它们是类变量,你仍然可以访问,如果不是,它们不应该改变程序的流程
猜你喜欢
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多