20.3.1. ProblemYou want to know what's happening at a specific point in your program, and what happened leading up to that point. 20.3.2. SolutionUse debug_print_backtrace( ): function stooges() { print "woo woo woo!\n"; larry(); } function larry() { curly(); } function curly() { moe(); } function moe() { debug_print_backtrace(); } stooges(); This will print: woo woo woo! #0 moe() called at [backtrace.php:14] #1 curly() called at [backtrace.php:10] #2 larry() called at [backtrace.php:6] #3 stooges() called at [backtrace.php:21] 20.3.3. DiscussionThe debug_backtrace( ) function was introduced in PHP 4.3.0, followed by the handy debug_print_backtrace( ) function in PHP 5.0.0. This combination allows you to quickly get a sense of what has been been going on in your application immediately before you called a particular function. The more complicated your application, the more information you can expect to have returned from the backtrace functions. For debugging larger codebases, you may achieve bug-hunting success more quickly using a full debugging extension, such as Xdebug, or an integrated development environment (IDE), such as PHPEdit or Zend Studio, that supports setting breakpoints, stepping in and out of blocks of code, watching the evolution of variables, and more. If all you need is a little more information than you can get from sprinkling print 'Here I am on line ' . __LINE__; statements throughout your code, debug_backtrace( ) and/or debug_print_backtrace( ) will suit your needs well. If you're still using PHP 4 and want the PHP 5only debug_print_backtrace( ) function, you can use PEAR's PHP_Compat compatibility package. PHP_Compat provides an implementation of debug_print_backtrace( ) that is identical to the native PHP 5 function. 20.3.4. See AlsoDocumentation on debug_backtrace( ) at http://www.php.net/debug-backtrace and on debug_print_backtrace( ) at http://www.php.net/debug-print-backtrace; the PEAR PHP_Compat package at http://pear.php.net/package/PHP_Compat; Zend Studio IDE at http://www.zend.com/products/zend_studio; PHPEdit IDE at http://www.waterproof.fr/products/PHPEdit/. |