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+MYSQL开发工具及资源收藏
Jan 02 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
Jun 26 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
浅析PHP开发规范
Feb 05 PHP
laravel 使用auth编写登录的方法
Sep 30 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php中的观察者模式简单实例
2015/01/20 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
JS前端框架关于重构的失败经验分享
2013/03/17 Javascript
jQuery对象和Javascript对象之间转换的实例代码
2013/03/20 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
2015/12/10 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
基于JS+Canves实现点击按钮水波纹效果
2016/09/15 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
python实现简单ftp客户端的方法
2015/06/28 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python configparser模块操作代码实例
2020/06/08 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
实习生评语
2014/04/26 职场文书
圆明园观后感
2015/06/03 职场文书
公司员工奖惩制度
2015/08/04 职场文书