欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP 调试追踪debug_backtrace()函数

程序员文章站 2022-03-03 08:40:59
...

PHP 调试追踪技巧

作用

使用调试追踪函数对应开发框架或调试错误有很大帮助,使用调试追踪函数可以编写类型tp框架中的trace()函数,打印除漂亮调试样式。

以下与个人学习开发的框架(类似tp框架)的Index控制中的index方法中进行打印调试测试

debug_backtrace()

  • PHP系统函数,可以追踪当前代码执行过程
  • 输出数据说明
名称 类型 描述
function string 当前的函数名。
line integer 当前的行号。
file string 当前的文件名。
class string 当前的类名。
object object 当前对象。
type string 当前的调用类型,可能的调用:返回:"->" - 方法调用返回:"::" - 静态方法调用返回 nothing - 函数调用
args array 如果在函数中,列出函数参数。如果在被引用的文件中,列出被引用的文件名。
  • 代码演示
class IndexController extends Controller{
    public function index(){
        $trace = debug_backtrace();
        dump($trace);
    }
}

?>
  • 输出结果
Array
(
    [0] => Array
        (
            [file] => E:\rufeike\xdqphp\XDQPHP\Lib\Core\Application.class.php
            [line] => 29
            [function] => index
            [class] => IndexController
            [object] => IndexController Object
                (
                )

            [type] => ->
            [args] => Array
                (
                )

        )

    [1] => Array
        (
            [file] => E:\rufeike\xdqphp\XDQPHP\Lib\Core\Application.class.php
            [line] => 17
            [function] => _app_run
            [class] => Application
            [type] => ::
            [args] => Array
                (
                )

        )

    [2] => Array
        (
            [file] => E:\rufeike\xdqphp\XDQPHP\XDQPHP.php
            [line] => 20
            [function] => run
            [class] => Application
            [type] => ::
            [args] => Array
                (
                )

        )

    [3] => Array
        (
            [file] => E:\rufeike\xdqphp\XDQPHP\XDQPHP.php
            [line] => 96
            [function] => run
            [class] => XDQPHP
            [type] => ::
            [args] => Array
                (
                )

        )

    [4] => Array
        (
            [file] => E:\rufeike\xdqphp\index.php
            [line] => 11
            [args] => Array
                (
                    [0] => E:\rufeike\xdqphp\XDQPHP\XDQPHP.php
                )

            [function] => require_once
        )

)

debug_print_backtrace()

  • 页面直接调用该函数,可以在页面直接输出当前代码执行流程追踪信息
<?php
class IndexController extends Controller{
    public function index(){
        debug_print_backtrace();//直接调用打印输出
      
    }
}

?>
  • 输出结果
#0  IndexController->index() called at [E:\rufeike\xdqphp\XDQPHP\Lib\Core\Application.class.php:29]
#1  Application::_app_run() called at [E:\rufeike\xdqphp\XDQPHP\Lib\Core\Application.class.php:17]
#2  Application::run() called at [E:\rufeike\xdqphp\XDQPHP\XDQPHP.php:20]
#3  XDQPHP::run() called at [E:\rufeike\xdqphp\XDQPHP\XDQPHP.php:96]
#4  require_once(E:\rufeike\xdqphp\XDQPHP\XDQPHP.php) called at [E:\rufeike\xdqphp\index.php:11]
  • 可以开启缓冲区,进行最终信息获取
    • 第一步:开启缓存区 ob_start();
    • 第二步:缓冲区中打印输出 debug_print_backtrace();
    • 第三步:从缓冲区中取出,放置到一个变量中 $var = ob_get_clean();
    • 注意:存在变量时,可以对缓存区的数据进行实体化,使用htmlspecialchars()
<?php
class IndexController extends Controller{
    public function index(){
        ob_start();//开启缓存区
        debug_print_backtrace();//缓冲区中输出打印
        $var = htmlspecialchars(ob_get_clean());//从缓存区中取值追踪信息
        dump($var);
    }
}

?>

输出结果

#0  IndexController->index() called at [E:\rufeike\xdqphp\XDQPHP\Lib\Core\Application.class.php:29]
#1  Application::_app_run() called at [E:\rufeike\xdqphp\XDQPHP\Lib\Core\Application.class.php:17]
#2  Application::run() called at [E:\rufeike\xdqphp\XDQPHP\XDQPHP.php:20]
#3  XDQPHP::run() called at [E:\rufeike\xdqphp\XDQPHP\XDQPHP.php:96]
#4  require_once(E:\rufeike\xdqphp\XDQPHP\XDQPHP.php) called at [E:\rufeike\xdqphp\index.php:11]
相关标签: php debug_backtrace

上一篇: 桶排序

下一篇: 栈&&队列