如何在php中触发核心转储?

如何在php中触发核心转储?,php,coredump,Php,Coredump,我的web应用程序偶尔(但很少)抛出特定的异常。我不知道为什么会发生这种情况,我无法复制它,也无法看到它发生在除生产服务器之外的任何地方。因此,我希望在发生特殊异常时,能够转储php的整个当前状态,以便跟踪其执行情况并找出触发它的原因 我不能使用xdebug,因为这是一个生产服务器,xebug会减慢执行速度(这已经足够慢了)。那么,我如何告诉php转储它的当前状态,以便稍后检查它呢 我能想到的唯一一件事是使用exec来kill当前进程,但这看起来非常混乱,而且在任何情况下,如果我可以转储php状

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

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

我能想到的唯一一件事是使用
exec
kill
当前进程,但这看起来非常混乱,而且在任何情况下,如果我可以转储php状态,而不是apache状态,那会更好。我甚至不知道这是否可能…

debug\u backtrace()
提供了所有请求的参数和函数,以便您可以查看其路径和调用它的内容

您可以将其保存到一个文件中,然后逐个查看


如果这真的是一个异常而不是崩溃,您可以声明一个全局异常处理程序来收集堆栈跟踪等@Ja͢ck Right,但如何获取其余状态?i、 内存的内容,以及堆栈上方作用域中的变量?是的,但它没有给出内存的内容,特别是它没有给出堆栈跟踪上方作用域中变量的值。知道如何得到它们吗?为什么变量没有传递下来?如果它们是类变量,您仍然可以访问,如果不是,则不应更改程序流