php程序调试追踪工具[PHPLog]

    xiaoxiao2021-11-18  51

    装载自:http://blog.csdn.net/altsee/archive/2009/08/24/4479755.aspx

     

    引子:

        本文将为你介绍一个调试工具,它可以替代echo,print_r,var_dump等系统函数,还具有调用栈及参数追踪功能.简言之,它是debug_backtrace的web版本. (请参看php手册的debug_backtrace)

    原理:

       1.程序执行的过程中,在相应的地方记录你想要追踪的变量及调用栈和每次函数调用的参数,          把这些信息以一定的格式记录到文件,一个变量一行,具体数据格式请参看代码,这里不细讲.

       2.现在有了每次记录变量时的所有信息(包括调用栈及参数),当你通过浏览器访问这个程序时, 这个程序会把整个文件读取分析,          在页面显示你的所有调试信息,并且它会动态ajax刷新,保持与你的调试同步.

       画个图吧,要清晰得多.

     

        BackTrace也就是调用栈信息,没有在图中体现。

    功用:

         再截几个本机的图说明下:

        1.包含文件,记录要调试的对象

    view plaincopy to clipboardprint? <?php   require_once("phplog.php");   $info = "Author: cavin<altsee@gmail.com>";   __log($info);   ?>  <?php require_once("phplog.php"); $info = "Author: cavin<altsee@gmail.com>"; __log($info); ?>

     浏览器的输出

     

        2.来个复杂点的, apache_request_headers().

    view plaincopy to clipboardprint? require_once("phplog.php");     __log( apache_request_headers() );  require_once("phplog.php");

    __log( apache_request_headers() );  

     

        

    3.drupal系统,某次函数调用栈列表,你可以看到整个执行的过程

        

        

       4.函数调用的参数

     

    后记:

      程序基本上实现了调试,追踪php变量的功能,还附带了调用栈及调用参数查看功能.      特别是像drupal这类复杂的系统,能够清楚地知道程序是怎么执行的.

    说明:

       程序是用php4的写法写成的,在php4.4.8, 5.2.5上测试过, 理论上是支持php4, php5的.

       程序有点大,逻辑也较复杂,代码就不帖出来讨论.

    SF在线演试(关闭了删除功能):     http://phplog.sourceforge.net/phplog.php

    下面的链接可以下载最新版本,当前版本v1.3.               http://sourceforge.net/projects/phplog/files/latest

     

    转载请注明原文地址: https://ju.6miu.com/read-678319.html

    最新回复(0)