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

執筆者:

関連記事

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

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

【PHP】デフォルトの設定だと大量のPOSTパラメーターは途中で切れるので注意!!

PHPで大量のデータをPOSTすと、POSTしたデータが途中で切れるという問題が発生。 原因はなんて事はなく、php.iniの設定の問題でした。 対応方法を解説します。 スポンサーリンク 目次max_ …

【現役フリーランスがレビュー】 ”いきなりはじめるPHP”は入門にオススメ

こんにちは! こへいんです。 今回はPHPの入門書”いきなりはじめるPHP”のレビューです! いきなりはじめるPHP posted with ヨメレバ 谷藤賢一 リックテレコム 2011年12月 楽天 …

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

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

【PHP】日時を計算する2つの方法

現在日を起点にして日時を取得して処理したいことってよくありますよね。 例えば、現在日時の1日前のデータのステータスを変更するとか。 今回は、PHPで日時を計算する2つ方法をご紹介します。 PHPの内部 …

フォスターフリーランス
プロフィール

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