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 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
解析在PHP中使用全局变量的几种方法
Jun 24 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
CodeIgniter与PHP5.6的兼容问题
Jul 16 PHP
学习php设计模式 php实现策略模式(strategy)
Dec 07 PHP
php将html转为图片的实现方法
May 19 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 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初学者最感迷茫的问题小结
2010/03/27 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
让FireFox支持innerText的实现代码
2009/12/01 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
简单实现jQuery弹幕效果
2017/05/06 jQuery
jquery实现图片放大点击切换
2017/06/06 jQuery
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
python3.7添加dlib模块的方法
2020/07/01 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
优秀班集体获奖感言
2014/02/03 职场文书
学生个人总结范文
2015/02/15 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
党课主持词大全
2015/06/30 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
python实现网络五子棋
2021/04/11 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python