PHP

【PHP】バックトーレス(呼び出し階層)をデバッグ出力する方法

投稿日:2016年10月12日 更新日:

PHPでバックトレースを出力する方法について解説します。

バックトレースというのは、呼び出し階層のようなものです。
エラーが発生した時に、何行目でエラーが発生してどのようなルートでメソッドが呼び出されていったかが表示されますよね。

そのバックトーレスをエラーが発生していない時に出力する方法です。

2パターンの方法をご紹介します。

スポンサーリンク

debug_print_backtrace()で呼び出し階層を一発出力

特に理由がなければ、簡単なこちらの方法が良いでしょう。

PHP標準で用意されているdebug_print_backtrace()を使います。

バックトレースを出力したい箇所で、debug_print_backtrace()をコールすればOKです。

下記のようなテキストが出力されます。

#0 c() called at [/tmp/include.php:10]
#1 b() called at [/tmp/include.php:6]
#2 a() called at [/tmp/include.php:17]
#3 include(/tmp/include.php) called at [/tmp/test.php:3]

リファレンスはこちら
debug_print_backtrace()リファレンス

とても簡単ですね。

特に理由がなければdebug_print_backtraceで十分でしょう。

カスタマイズしてクラス名・関数名・引数の値も出力できる

もう1つの方法は、少し手間をかけて出力する形式を自由にカスタマイズする方法です。

debug_backtrace()というメソッドは、バックトーレスの情報を配列で返します。
この情報を利用して、自由な形式で出力させます。

debug_backtrace リファレンス

自由な形式といっても実装するの面倒ですよね。笑

ということでサンプルを用意しました。
これをもとに自由にカスタマイズしてお好みの形式出力出来るかと思います。

このサンプルコードでは、下記の情報をバックトーレスから取得して出力しています。

  • ファイル名
  • 行数
  • クラス名
  • 関数名
  • 関数の場合は引数

サンプルコード

出力結果サンプル

まとめ:バックトーレス(呼び出し階層)はデバッグに役立つ

PHPでバックトーレスを出力する方法でした!

複雑なシステムだと、これどこから呼び出されてんだ!?
って事もありますよね。

この方法で呼出階層を辿れば解析も捗ります。

更に解析を捗らせたいなら、Xdebugを利用してデバッグ設定をするのもオススメです。
ステップ実行出来たり、変数の中身を見たり出来るようになるのでデバッグ作業が断然捗りますので!

最後までお読み頂きありがとうございました!

スポンサーリンク


-PHP

執筆者:

関連記事

【現役エンジニアがオススメ】『いきなりはじめるPHP』はプログラミング入門に最適

こんにちは!DENです。 PHPの入門書『いきなりはじめるPHP』が、なかなか良い本だったのでご紹介します。 いきなりはじめるPHP posted with ヨメレバ 谷藤賢一 リックテレコム 201 …

【EC-CUBE2】CSVをUTF-8でダウンロードさせる修正方法

デフォルトのEC-CUBE2だと、ダウンロードされるCSVはShift-JISになっています。 おそらく、EXCELでCSVを編集する事を考慮しているのでしょう。 でも、Shift-JISだと困るシー …

【EC-CUBE2】 SQLをデバック出力する方法

EC-CUBE2で実行されるSQLをデバッグ出力する方法について。 コードをコピペする事で、実行されたSQLを画面にデバッグ出力できます。 スポンサーリンク 目次EC-CUBE2でSQLをデバックする …

PhpStorm&MAMP環境のデバッグ(Xdebug)の設定方法

Phpstorm&MAMPP環境でデバッガー(Xdebug)を使えるようにする手順の説明です。 面倒ですけど、デバッガーを設定すると開発がめちゃくちゃ捗りますよ! デバッグ用にダンプ出力したりしている …

【EC-CUBE】新しいフロントページを追加する方法

EC-CUBE2で新規にフロントページを追加する方法の解説です。 スポンサーリンク 目次dtb_pagelayoutにレコードを追加するPHPファイルを作成ページクラスを作成テンプレートファイルを配置 …

プロフィール

このサイトを運営しているDENです。
アングラーのフリープログラマー。 主にプログラミングと釣の話を発信しています。
プログラミングで自由になり思う存分に釣りをしまくる生活実践中。
詳しいプロフィールはこちら 
フォスターフリーランス