debug_backtraceのメモリ不足エラーを解消しよう

PHPで関数がどこから呼ばれたか知りたい場合、debug_backtraceを使うと確認できる。

error_log(print_r(debug_backtrace(),1));

ただし、backtraceが大きすぎる場合、メモリ不足でエラーになってしまう。

Symfony\\Component\\Debug\\Exception\\FatalErrorException: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65028096 bytes)

そんな時、第1引数に、DEBUG_BACKTRACE_IGNORE_ARGSを入れ出力内容を減らし、メモリ使用量を減らしエラーを回避できることがある。

error_log(print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS),1));

または、debug_backtraceの第2引数で、出力するスタックフレームの数を明示的に指定することでも、調整が可能である。

error_log(print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS,1),1))

PHP: debug_backtrace – Manual