PHPLog php 程序调试追踪工具

原理:

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

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

画个图吧,要清晰得多.


     BackTrace也就是调用栈信息,没有在图中体现,是ajax动态刷新的.

功用:

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

1.包含文件,调试变量(上面是程序,下面是apache_request_headers()的调试输出)


     2.drupal系统某次函数的调用栈列表


     3.栈中某个函数的调用参数

后记:

程序基本上实现了调试,追踪php变量的功能,还附带了调用栈及调用参数查看功能.

现在echo,print_r,var_dump等系统函数,如非必要时,本人已很少用来调试输出了,基本上用这个就可以得到想要的东西了.

特别是像drupal这类复杂的系统,能够清楚地知道程序是怎么执行的.

说明:

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

linux, window, ie6-7, firefox下也都测试过,但还是不敢保证在你的环境下不出错,如有,请自行修正.

请不让log文件超过5M大小,浏览器可能会崩溃的.
下载地址 http://www.jb51.net/codes/20851.html

(0)

相关推荐

  • PHPLog php 程序调试追踪工具

    原理: 1.程序执行的过程中,在相应的地方记录你想要追踪的变量及调用栈和每次函数调用的参数,          把这些信息以一定的格式记录到文件,一个变量一行,具体数据格式请参看代码,这里不细讲. 2.现在有了每次记录变量时的所有信息(包括调用栈及参数),当你通过浏览器访问这个程序时, 这个程序会把整个文件读取分析,          在页面显示你的所有调试信息,并且它会动态ajax刷新,保持与你的调试同步. 画个图吧,要清晰得多.      BackTrace也就是调用栈信息,没有在图中体现,

  • c语言程序调试方法整理

    c语言程序的调试方法 所谓程序调试是指对程序的查错和排错. 调试程序一般应经过以下几个步骤: 一.先进行人工检查,即静态检查. 在写好一个程序以后,不要匆匆忙忙上机,而应对程序进行人工检查.这一步十分重要,它能发现程序设计人员由于疏忽而造成的 多数错误.这一步往往容易被人忽视,总希望把一切都推给计算机去做,但这样会多占用机器时间,作为一个程序人员应当养成严谨的作风,每一步都要严格把关,不把问题留给后面的工序. 为了更有效地进行人工检查,所编的程序应力求做到以下几点: ①应当采用结构化程序方法编程

  • 详解Linux 下开发微信小程序安装开发工具

    详解Linux 下开发微信小程序安装开发工具 1. git clone https://github.com/yuan1994/wechat_web_devtools 然后创建一个文件夹 mkdir /opt/tencent/ 移动文件 mv ./wechat_web_devtools /opt/tencent 修改用户组 chown -R root:root /opt/tencent/wechat_web_devtools 启动测试工具 /opt/tencent/wechat_web_devt

  • Vue程序调试的方法

    1.写本文的背景 因为程序的调试非常重要,程序猿可以利用好的调试方法去查找定位自己的问题所在之处.从而,达到纠正自己程序错误的地方,健壮自己的程序,让问题变得越来越少,程序变得越来越健康.故作此文,而且日后会将实用的调试程序方法不断进行迭代更新. 2.调试与测试 调式与测试实际有异曲同工之妙,只不过对象不同.测试面向的是产品级,系统级:而调试往往是程序里的某一部分,某个方法,某个属性或者对象.最终效果也很类似,好的测试人员,测试方案可以将产品系统的问题解决在摇篮中:好的调试方法也会让你对程序的运

  • JavaScript语法约定和程序调试原理解析

    JavaScript 语法约定 1.大小写的区分 1). JavaScript的关键字,永远都是小写的: 2). 内置对象,如Math和Date是以大写字母开头的: 3). 对象的名称通常是小写:若是多个单词,驼峰(Camel)命名法. 驼峰(Camel)命名法:开头单词小写,后面单词首字母大写.使用的很普遍,很多人习惯这种命名方法.示例:userName. 2.变量.对象和函数的名称命名 当声明变量.对象和函数的名称时大小写,数字,下划线,美元符号都可以,但是必须以字母,下划线,美元符号开头.

  • 用Python编写分析Python程序性能的工具的教程

    虽然并非你编写的每个 Python 程序都要求一个严格的性能分析,但是让人放心的是,当问题发生的时候,Python 生态圈有各种各样的工具可以处理这类问题. 分析程序的性能可以归结为回答四个基本问题: 正运行的多快 速度瓶颈在哪里 内存使用率是多少 内存泄露在哪里 下面,我们将用一些神奇的工具深入到这些问题的答案中去. 用 time 粗粒度的计算时间 让我们开始通过使用一个快速和粗暴的方法计算我们的代码:传统的 unix time 工具. $ time python yourprogram.py

  • .NET程序调试技巧(一):快速定位异常的一些方法

    作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重要的.有句话叫"发现问题是解决问题的一半. 本文讲述就快速定位异常(专指.NET程序异常)的方法.包括在本机定位异常,在客户环境定位.net程序异常,在客户环境定位SilverLight异常. 一:定位本机异常 在我们本机定位异常很容易.假设我们都是使用的的VisualStudio,那么只需要在调试

  • JavaScript/VBScript脚本程序调试(Wscript篇)

    在实际工作中,我发现程序员对脚本抱怨最多的就是脚本程序很难调试这个缺点,特别是调试.vbs等WSH程序的时候,总是: 1. 在资源管理器里面双击一个.vbs文件. 2. 程序里面发生了一个错误,例如异常,或者编程逻辑错误. 3. 一行行阅读源文件,然后在估计发生错误的地方,添加很多的Msgbox.Show,打印一些变量的值. 4. 重新执行.vbs文件 5. "当当当",一系列的 "确定"点完了以后,人也晕了,重新回到第三步继续-- 其实我们也是可以用Visual

  • javascript函数式编程程序员的工具集

    如果你仔细看了到目前为止出现过的示例代码,你会发现这里面的一些方法不太熟悉. 它们是map().filter()和reduce()函数,它们对任何语言的函数式编程都至关重要. 它们可以让你不必使用循环和语句,写出更简洁的代码. map().filter()和reduce()函数组成了函数式程序员工具集的核心部分,这个工具集包括一系列纯的. 高阶的函数,它们是函数式方法的主力.实际上,它们是纯函数和高阶函数的典型,它们以一个函数为输入, 返回一个输出结果,并且不产生副作用. 然而它们是浏览器中EC

  • C++调试追踪class成员变量的方法

    比如:int (*foo)(int arg),记住要和另一个指针函数区分开来,类似这样:int *foo(int arg).比如我们可以这样声明一个变量和函数: 复制代码 代码如下: int (*pfun)(int arg)=0;int fun(int arg);    //这个函数实现随便啦,我就不写了. 如果我们想利用函数指针操作函数,就和指针变量使用一样: 复制代码 代码如下: pfun=fun;int result=(*pfun)(123); 对,很鸡肋也没必要.这是当然,因为我们没用在

随机推荐