Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Print PHP Call Stack

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given a PHP code and task is to print call stack for this PHP code. In the given PHP code, a child_func() function calls parent_func() function which further calls grandparent_func() function resulting in a call stack.

Approach 1: Print the call stack using debug_print_backtrace() function.

Example:




<?php
// PHP program to print PHP call stack
  
// Function to call parent_func 
function child_func() {
    parent_func();
}
  
// Function to call grandparent_func
function parent_func() {
    grandparent_func();
}
  
// Function to print call stack
function grandparent_func() {
    debug_print_backtrace();
}
  
// Main function call
child_func();
  
?>

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]

Approach 2: Print the call stack using debug_backtrace() function.
Example:




<?php
// PHP program to print PHP call stack
  
// Function to call parent_func 
function child_func() {
    parent_func();
}
  
// Function to call grandparent_func
function parent_func() {
    grandparent_func();
}
  
// Function to print call stack
function grandparent_func() {
    var_dump(debug_backtrace());
}
  
// Main function call
child_func();
  
?>

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) {
    }
  }
}

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

Example:




<?php
// PHP program to print PHP call stack
  
// Function to call parent_func 
function child_func() {
    parent_func();
}
  
// Function to call grandparent_func
function parent_func() {
    grandparent_func();
}
  
// Function to print call stack
function grandparent_func() {
    $e = new Exception;
    var_dump($e->getTraceAsString());
}
  
// Main function call
child_func();
  
?>

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}"

My Personal Notes arrow_drop_up
Last Updated : 15 Jan, 2019
Like Article
Save Article
Similar Reads
Related Tutorials