debug_backtrace

バックトレースを生成する

説明

array debug_backtrace(int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT, int $limit = 0)

debug_backtrace は PHP バックトレースを生成します。

パラメータ

options

このパラメータは次のオプションのビットマスクとなります。

debug_backtrace のオプション
DEBUG_BACKTRACE_PROVIDE_OBJECT "object" インデックスを埋めるかどうか。
DEBUG_BACKTRACE_IGNORE_ARGS "args" インデックス、 すなわちすべての関数/メソッドの引数を省略してメモリを節約するかどうか。

注意:

可能な組み合わせは以下の4つです:

debug_backtrace のオプション
debug_backtrace() インデックスを両方収集します。
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT)
debug_backtrace(1)
debug_backtrace(0) インデックス "object" を省略し、"args" を収集します。
debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) インデックス "object""args"両方省略します。
debug_backtrace(2)
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS) インデックス "object" を収集し、"args" を省略します。
debug_backtrace(3)

limit

このパラメータを使ってスタックフレームの数を制限できます。 デフォルト (limit=0) は、すべてのスタックフレームを返します。

戻り値

連想配列の配列を返します。連想配列の要素として返される可能性があるものは以下のとおりです。

debug_backtrace から返される可能性がある要素
名前 説明
function string カレントの関数名。 __FUNCTION__ も参照ください。
line int カレントの行番号。 __LINE__ も参照ください。
file string カレントのファイル名。 __FILE__ も参照ください。
class string カレントのクラス名。 __CLASS__ も参照ください。
object object カレントのオブジェクト
type string カレントのコール方式。メソッドを呼び出している場合は "->"、 staticメソッドを呼び出している場合は "::" が返されます。 関数呼び出しの場合は何も返されません。
args array 関数の内部の場合、関数の引数のリストとなります。 インクルードされたファイル内では、 読み込まれたファイルの名前となります。

例1 debug_backtrace の例

<?php
// ファイル名: /tmp/a.php

function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}

a_test('friend');
?>

<?php
// ファイル名: /tmp/b.php
include_once '/tmp/a.php';
?>

/tmp/b.php を実行した際の結果は以下のようになります。

Hi: friend
array(2) {
[0]=>
array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"
    ["args"]=>
    array(1) {
      [0] => &string(6) "friend"
    }
}
[1]=>
array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}

参考

  • trigger_error
  • debug_print_backtrace