Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP Error Handling debug_backtrace() Function



The PHP Error Handling debug_backtrace() function is used for error management and debugging. By showing the series of function calls that took the script to its current point, it provides complete details on the call stack.

This functionality is helpful for tracking down errors, finding erroneous code, and analyzing program flow. Details that are returned in an array include file names, line numbers, and function arguments. Developers commonly use it to quickly identify issues using custom error handlers or debugging.

Syntax

Below is the syntax of the PHP Error Handling debug_backtrace() function −

array debug_backtrace ( int $options, int $limit )

Parameters

Here are the parameters of the debug_backtrace() function −

  • $options − (Optional) It defines a bitmask for the options listed as follows: DEBUG_BACKTRACE_PROVIDE_OBJECT (If the "object" index should be filled in or not), DEBUG_IGNORE_ARGS_BACKTRACE (Whether or not to save memory by leaving out the "args" index and all function/method arguments.)

  • $limit − (Optional) It limits the number of stack frames that can be created. All stack frames are reported by default (limit=0).

Return Value

The debug_backtrace() function returns an associative array. The possible returned elements are as follows −

Name Type Description
function string It is the current function name.
line integer Itr is the current line number.
file string It is the current file name.
class string It is the current class name.
object string It is the current Object.
type string It is the current call type. If a method call, "->" is returned. If a static method call, "::" is returned. If a function call, nothing is returned.
arg array If inside a function, this lists the functions arguments. If inside an included file, this lists the included file name(s).

PHP Version

First introduced in core PHP 4.3.0, the debug_backtrace() function continues to function easily in PHP 5, PHP 7, and PHP 8.

Example 1

This program shows how to produce the stack trace using the PHP Error Handling debug_backtrace() function when a function is called. The order of functions that determine the present place is shown in the call stack, which is reported.

<?php
   function testFunction1() {
      // Outputs the call stack
      print_r(debug_backtrace()); 
   }

   function testFunction2() {
      // Calls the first function
      testFunction1(); 
   }

   // Starts the chain
   testFunction2(); 
?>

Output

Here is the outcome of the following code −

Array
(
   [0] => Array
      (
         [file] => /Users/abc/Desktop/PHP/PhpProjects/index.php
         [line] => 13
         [function] => testFunction1
         [args] => Array
            (
            )
      )

  [1] => Array
      (
         [file] => /Users/abc/Desktop/PHP/PhpProjects/index.php
         [line] => 16
         [function] => testFunction2
         [args] => Array
            (
            )
      )
)

Example 2

In the below PHP code we will use the debug_backtrace() function with the $options parameter. The $options parameter is used to remove function arguments from the stack trace bysaving memory. It shows how to control the output detail.

<?php
   function exampleFunction($arg1, $arg2) {
      print_r(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));
   }

   exampleFunction("Hello", "World"); 
?> 

Output

This will generate the below output −

Array
(
   [0] => Array
      (
         [file] => /Users/abc/Desktop/PHP/PhpProjects/index.php
         [line] => 12
         [function] => exampleFunction
      )
)

Example 3

Now the below code uses the debug_backtrace() function with the $limit parameter to limit stack frames. So basically this program limits the number of stack frames using the $limit parameter. It shows how to control the depth of the backtrace output.

<?php
   function level1() {
      // Calls next level
      level2(); 
   }

   function level2() {
      // Calls next level
      level3(); 
   }

   function level3() {
      print_r(debug_backtrace(0, 2)); 
   }

   // Starts the chain
   level1(); 
?> 

Output

This will create the below output −

Array
(
   [0] => Array
      (
         [file] => /Users/abc/Desktop/PHP/PhpProjects/index.php
         [line] => 13
         [function] => levelThree
         [args] => Array
            (
            )
      )

   [1] => Array
      (
         [file] => /Users/abc/Desktop/PHP/PhpProjects/index.php
         [line] => 9
         [function] => levelTwo
         [args] => Array
            (
            )
      )
)
php_function_reference.htm
Advertisements