array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.debug-backtrace.php', 1 => 'debug_backtrace', ), 'up' => array ( 0 => 'ref.errorfunc.php', 1 => 'エラー処理関数', ), 'prev' => array ( 0 => 'ref.errorfunc.php', 1 => 'エラー処理関数', ), 'next' => array ( 0 => 'function.debug-print-backtrace.php', 1 => 'debug_print_backtrace', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/errorfunc/functions/debug-backtrace.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
debug_backtrace — バックトレースを生成する
debug_backtrace() は PHP バックトレースを生成します。
options
このパラメータは次のオプションのビットマスクとなります。
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
) は、すべてのスタックフレームを返します。
連想配列の配列を返します。連想配列の要素として返される可能性があるものは以下のとおりです。
名前 | 型 | 説明 |
---|---|---|
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" } }