ホームページ >バックエンド開発 >PHPチュートリアル >PHPでコールスタックを出力する方法

PHPでコールスタックを出力する方法

藏色散人
藏色散人オリジナル
2019-01-24 13:45:398664ブラウズ

指定された PHP コードでは、child_func() 関数がparent_func() 関数を呼び出し、さらに、grandparent_func() 関数を呼び出して、コール スタックを生成します。

PHPでコールスタックを出力する方法

推奨学習: 「PHP チュートリアル

PHP で呼び出しスタックを出力する 3 つの方法は次のとおりです。

##方法 1: debug_print_backtrace() 関数 を使用して、コール スタックを出力します。

例:

<?php 
// 用于打印PHP调用堆栈的PHP程序
//调用函数parent_func
function child_func() { 
    parent_func(); 
} 
  
// 调用grandparent_func函数
function parent_func() { 
    grandparent_func(); 
} 
  
// 函数的作用是:打印调用堆栈
function grandparent_func() { 
    debug_print_backtrace(); 
} 
  
//主函数调用 
child_func(); 
  
?>

出力:

#0  grandparent_func() called at [/home/905a3b4d90f10b30521fedcb56c99fba.php:12]
#1  parent_func() called at [/home/905a3b4d90f10b30521fedcb56c99fba.php:7]
#2  child_func() called at [/home/905a3b4d90f10b30521fedcb56c99fba.php:21]

メソッド 2: debug_backtrace() 関数 を使用してコール スタックを出力します。 。

例:

<?php 
// 用于打印PHP调用堆栈的PHP程序
//函数调用parent_func
function child_func() { 
    parent_func(); 
} 
  
// 函数调用grandparent_func
function parent_func() { 
    grandparent_func(); 
} 
  
// 函数的作用是:打印调用堆栈
function grandparent_func() { 
    var_dump(debug_backtrace()); 
} 
  
// 主函数调用 
child_func(); 
  
?>

出力:

array(3) {
  [0]=>
  array(4) {
    ["file"]=>
    string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
    ["line"]=>
    int(12)
    ["function"]=>
    string(16) "grandparent_func"
    ["args"]=>
    array(0) {
    }
  }
  [1]=>
  array(4) {
    ["file"]=>
    string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
    ["line"]=>
    int(7)
    ["function"]=>
    string(11) "parent_func"
    ["args"]=>
    array(0) {
    }
  }
  [2]=>
  array(4) {
    ["file"]=>
    string(42) "/home/2b81f040639170c49a6a58adb23d5154.php"
    ["line"]=>
    int(21)
    ["function"]=>
    string(10) "child_func"
    ["args"]=>
    array(0) {
    }
  }
}

メソッド 3: Exception クラスの getTraceAsString() メンバー関数は、コール スタックを返します。

例:

<?php 
// 用于打印PHP调用堆栈的PHP程序
//函数调用parent_func
function child_func() { 
    parent_func(); 
} 
  
// 函数调用grandparent_func
function parent_func() { 
    grandparent_func(); 
} 
  
// 函数的作用是:打印调用堆栈
function grandparent_func() { 
    $e = new Exception; 
    var_dump($e->getTraceAsString()); 
} 
  
// 主函数调用
child_func(); 
  
?>

出力:


string(207) "#0 /home/8d8303d43667a4915d43dab7d63de26d.php(12): grandparent_func()
#1 /home/8d8303d43667a4915d43dab7d63de26d.php(7): parent_func()
#2 /home/8d8303d43667a4915d43dab7d63de26d.php(22): child_func()
#3 {main}"

この記事は、PHP でコール スタックを出力する方法に関する 3 つの方法を紹介します。それを必要としている友達に役立ちます。助けてください!

以上がPHPでコールスタックを出力する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。