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】Mac/XAMPP/Eclipseでローカルに複数サイトの開発環境構築

Mac/XAMPP/Eclipseでバーチャルホストを使って複数の開発環境を構築する方法についてのメモです。 (Windowsでの構築方法はWindows/XAMPP/Eclipseでローカルに複数サ …

EclipseからPhpStormへ乗り換える時に行った事

こんにちは! DENです! 僕はもともとJavaエンジニアだったので、PHPの開発ももっぱらEclipseです。 もう10年近くEclipseを使っています。 使い慣れたIDEで不満もなく使っていまし …

PhpStormに乗り換えて良かった!オススメの5つの機能

EclipseからPhpStormに乗り換えて2年目に突入し、迷わずPhpStormのライセンスを更新しました。 PhpStormにはかな〜り満足しています。 開発効率はだいぶ上がったんじゃないでしょ …

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

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

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

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

プロフィール

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