PHP 调试工具Debug Tools


Posted in PHP onApril 30, 2011

发现了个调试PHP源码的好同志: PHP DEBUG TOOLS

其项目地址: http://freshmeat.net/projects/php-debug-tools/
文件下载地址: http://freshmeat.net/urls/7c58ae3fecce5763e7546b958d36e082
目前是1.03版本

这里偶的环境是WINDOW XP , APACHE2.2, PHP5.2+ Zend Optimizer,
这里结合PHP DEBUG TOOLS的帮助文档来讲解,图有些是摘自文档.

一.安装篇
安装前的准备环境:必须得先装X-Debug,
至于怎样安装X-Debug请看http://www.xdebug.org/docs/install

1. 从http://www.xdebug.org/download.php下载合适你的X-DEBUG版本
2. 解压DLL文件到PHP安装目录下的ext目录,如C:/php/ext/php_xdebug-2.0.4-5.2.8-nts.dll
3. 修改php.ini文件,加入下段:
-------------偶是变态的分割线,你看不见我------------------------
zend_extension = "C:/php/ext/php_xdebug-2.0.4-5.2.8-nts.dll"
xdebug.collect_includes = Off
xdebug.default_enable = Off

xdebug.dump_globals = Off
xdebug.dump_once = Off
xdebug.extended_info = Off
-------------偶是变态的分割线,你看不见我------------------------
注:This example is for non-thread safe version. For the thread safe version change "zend_extension" to "zend_extension_ts"

安装完毕,解压PHP DEBUG TOOLS压缩包里的所有文件到网站发布目录.
(假设发布目录为c:\www,那么就在其新建一个debug目录,把所有文件扔进去)

在浏览器中输入:http://localhost/debug/test1-debug.php
如果看见下图则安装成功.
PHP 调试工具Debug Tools
二.调试篇
1.Debug errors
如以下代码:

<?php 
require './lib/debug.php'; 
function test($a, $b) 
{ 
echo $asd; 
} 
test(10, 'abc'); 
?>

PHP 调试工具Debug Tools
2.用Debug()来调试
如以下代码:
<?php 
require './lib/debug.php'; 
function test($args) 
{ 
test_nested($args); 
} 
function test_nested($args) 
{ 
debug($args); 
// or: debug(get_defined_vars()); 
// or: debug(); 
} 
test(array('id'=>123, 'str'=>'test')); 
?>

PHP 调试工具Debug Tools
3.用dump()或者dump_tofile()调试
如以下代码:
<?php 
include_once './lib/dump.php'; 
function test5() 
{ 
include './testdata/test0.php'; 
$test = array('int'=>1, 'float'=>2.0, 'float2'=>2.1); 
dump($test, $_SERVER); 
} 
function test1() { test2(); } 
function test2() { test3(); } 
function test3() { test4(); } 
function test4() { test5(); } 
test1(); 
?>

PHP 调试工具Debug Tools
至于dump_tofile()一般在以下情形使用:
A.当你不想停止程序运行时
B.不是你不想显示调式数据,而是你不能.比如当你在AJAX请求状态时.
C.你还想在多处地方调式

可参见debug目录下的test7-dump_tofile.php

注:本人在运行dump()或者dump_tofile()时发现并不能出现PHP DEBUG TOOL文档中所述
PHP 调试工具Debug Tools
这里可以通过修改debug/lib/debug.php的代码来更正.(因为dump_tofile()有调用到dump(),所以我们只需修改一处.
于149行处的
echo $pre;

修改成:

//edit by benben---start
echo '<script type="text/javascript">';
echo 'document.write(';
echo $pre;
echo ');';
echo '</script>';
//edit by benben---end

修正后的图:
PHP 调试工具Debug Tools
4.跟踪代码,查看系统性能
可以浏览目录下的test3-trace.php,之后点右下角的控制台就可以了.
具体可参照文档.(文档在压缩包内的doc目录下)
三,如何与项目结合?

先把php debug tool的解压缩文件,放置于项目目录,建个目录就叫debug吧! : )
其实我们需要的只是几个文件而已.
比如路径为:c:\www\projectName\debug

之后,我们可以通过两种方式来调试
第一种,可以在项目源码中加入这么一句:
include_once('./lib/debug.php');

例如以下:c:\www\projectName\hellodebug\index.php

<?php 
include_once('./debug/lib/debug.php'); $faint = 'helloworld ,debuging'; 
debug($arrb); 
?>

什么?你不想每个页面都写这么一句?
那么看看第二种方法,
这里也有两种方式,
1.修改php.ini 加入以下内容(修改成你自身的目录):
auto_prepend_file = "c:\www\projectName\debug\auto_prepend.php"
auto_append_file = "c:\www\projectName\debug\auto_append.php"

2.修改.htaccess文件(注:此方法偶没试过,嘿嘿)
php_value auto_prepend_file "c:\www\projectName\debug\auto_prepend.php"
php_value auto_append_file "c:\www\projectName\debug\auto_append.php"

这样的话就可以方便整个项目的调试.

如果是AJAX开发的话,还有需要的地方,具体请参照文档.(因本人还没那个需要,所以暂时先跳开了,不要拍砖,嘿嘿.)

PHP 相关文章推荐
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
PHPCMS手机站伪静态设置详细教程
Feb 06 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
PHP数组常用函数实例小结
Aug 20 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
php debug 安装技巧
Apr 30 #PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 #PHP
php获取mysql数据库中的所有表名的代码
Apr 23 #PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 #PHP
mysql_num_rows VS COUNT 效率问题分析
Apr 23 #PHP
fleaphp rolesNameField bug解决方法
Apr 23 #PHP
FirePHP 推荐一款PHP调试工具
Apr 23 #PHP
You might like
PHP学习笔记之一
2011/01/17 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
车间班长岗位职责
2013/11/30 职场文书
学校班班通实施方案
2014/06/11 职场文书
启动仪式策划方案
2014/06/14 职场文书
机械机修工岗位职责
2014/08/03 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
三年级学生期末评语
2014/12/26 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
《我是什么》教学反思
2016/02/16 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android
go goth封装第三方认证库示例详解
2022/08/14 Golang