PHP错误处理 - 跟踪代码调用

Posted 李晓东的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP错误处理 - 跟踪代码调用相关的知识,希望对你有一定的参考价值。

#开发过程中,修改代码或者调试代码,想知道问题出现在哪里,往往是一步步的去排除问题。利用debug_backtrace整个过程的调用过程,并能回溯到最开始调用的地方,便于开发和排查。
#说明:debug_backtrace ([int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT [,int $limit = 0 ]]) : array 产生一条回溯跟踪
#参数: options 
#options: DEBUG_BACKTRACE_IGNORE_ARGS  是否忽略 "args" 的索引,包括所有的 function/method 的参数,能够节省内存开销。
#options: DEBUG_BACKTRACE_PROVIDE_OBJECT  是否填充 "object" 的索引
#参数: limit 截至 5.4.0,这个参数能够用于限制返回堆栈帧的数量。 默认为 (limit=0) ,返回所有的堆栈帧
#返回值:返回一个包含众多关联的array
#array: __FUNCTION__  方法名称
#array: __FILE__  文件名称
#array: __LINE__  行数
#array: __CLASS__  类名称
#array: type 当前调用的类型。如果是一个方法,会返回 "->"。如果是一个静态方法,会返回 "::"。 如果是一个函数调用,则返回空。
#array: args 如果在一个函数里,这会列出函数的参数。 如果是在一个被包含的文件里,会列出包含的文件名。



/**
 * php扩展 - 错误处理
 * debug_backtrace 产生一条回溯跟踪
 */
class backtrace{
        public function backtrace_test($str) {
                echo "
test: $str";
                echo "<pre>";
                var_dump(debug_backtrace());
                echo "</pre>";
        }

        public static function backtrace_test1($str) {
                echo "
test: $str";
                echo "<pre>";
                var_dump(debug_backtrace());
                echo "<pre/>";
        }
}
$backtrace = new backtrace();
$backtrace->backtrace_test("debug_backtrace");
$backtrace::backtrace_test1("debug_backtrace1");

/*
打印结果:
test: debug_backtrace
array(1) {
  [0]=>
  array(7) {
    ["file"]=>
    string(36) "/var/www/laravel/error_reporting.php"
    ["line"]=>
    int(23)
    ["function"]=>
    string(14) "backtrace_test"
    ["class"]=>
    string(9) "backtrace"
    ["object"]=>
    object(backtrace)#1 (0) {
    }
    ["type"]=>
    string(2) "->"
    ["args"]=>
    array(1) {
      [0]=>
      string(15) "debug_backtrace"
    }
  }
}
test: debug_backtrace1
array(1) {
  [0]=>
  array(6) {
    ["file"]=>
    string(36) "/var/www/laravel/error_reporting.php"
    ["line"]=>
    int(24)
    ["function"]=>
    string(15) "backtrace_test1"
    ["class"]=>
    string(9) "backtrace"
    ["type"]=>
    string(2) "::"
    ["args"]=>
    array(1) {
      [0]=>
      string(16) "debug_backtrace1"
    }
  }
}
*/
 

 

以上是关于PHP错误处理 - 跟踪代码调用的主要内容,如果未能解决你的问题,请参考以下文章

PHP使用debug_backtrace方法跟踪代码调用

php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用

代码片段 PHP,预期文件结尾,我错在哪里?

PHP代码-psysh调试代码片段工具

PhpUnit 未显示 php 致命错误的堆栈跟踪

PhpUnit 未显示 php 致命错误的堆栈跟踪