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で十分でしょう。

debug_backtraceで出力形式をカスタマイズ

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

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

debug_backtrace リファレンス

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

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

サンプルコード

出力結果サンプル

0)/test/test.php(44):Test->print_debugtrace
 Array ( [0] => 1 )

1)/test/index.php(27):Index->init
 Array ( )

まとめ

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

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

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

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

スポンサーリンク


-PHP

執筆者:

関連記事

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

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

【PHP】Shift-JISにエンコードしたCSVが文字化けするのはBOMが原因?

PHPでShift-JISに変換エンコードしたCSVをダウンロードする機能を実装したのですが、日本語の文字化けが発生。 この問題がちょっとややこしくて解決するのに時間がかかりました。 なんと文字化け …

【PhpStorm】デプロイ構成のユーザー名とパスワードが保存されない時の対処方法

PhpStormに移行して快適な生活を過ごしております。 かなり気に入ったのですがその中でもデプロイ機能の使いやすさは抜群です! PhpStormから簡単にサーバーへのアップロードやダウンロードはもち …

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

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

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

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

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

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