How to print call stack in PHP

藏色散人
Release: 2023-04-04 20:44:01
Original
8599 people have browsed it

In the given PHP code, the child_func() function calls the parent_func() function, which further calls the grandparent_func() function, thus generating a call stack.

How to print call stack in PHP

Recommended study: "PHP Tutorial"

The three methods of PHP printing call stack are as follows:

Method 1: Use the debug_print_backtrace() function to print the call stack.

Example:

<?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(); 
  
?>
Copy after login

Output:

#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]
Copy after login

Method 2: Use the debug_backtrace() function to print the call stack.

Example:

<?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(); 
  
?>
Copy after login

Output:

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) {
    }
  }
}
Copy after login

Method 3: The getTraceAsString() member function of the Exception class returns a call stack.

Example:

<?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(); 
  
?>
Copy after login

Output:

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}"
Copy after login

This article is an introduction to three methods on how to print the call stack in PHP. I hope it will be helpful to friends who need it. help!

The above is the detailed content of How to print call stack in PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template