ktykwsk.com

スタックトレースを出力する

プログラムのデバッグをする際、スタックトレースを用いれば、呼び出し箇所を容易に特定できます。

その出力方法です。

debug_backtrace()関数を使用します。

公式ドキュメントはこちら

このように使用して出力します。

__METHOD__ 定数を利用している理由は、この処理を組み込んだ箇所を忘れないようにする為です。

実行結果の例を以下に記します。

これはLumen フレームワークを用いたアプリケーションで、Illuminate\Database\Connection::runQueryCallback()メソッドの呼び出し経路を、Log  ファサードのdebug()メソッドを利用して出力したものです。

私はフレームワークの拡張を行う際に、このような調査をよく行っています。

例えば、

  1. Aクラスを継承し、BメソッドをオーバーライドしたCクラスを作成
  2. Aクラスの生成箇所を特定
  3. そこをCクラスのインスタンス生成処理と変更

このような生成処理を行っている箇所を特定する場合等です。