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概述.
Oct 09 PHP
php设置编码格式的方法
Mar 05 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
php实现mysql事务处理的方法
Dec 25 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 PHP
php+websocket 实现的聊天室功能详解
May 27 PHP
php在linux环境中如何使用redis详解
Dec 15 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 ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
用Python编写简单的微博爬虫
2016/03/04 Python
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
Python的requests网络编程包使用教程
2016/07/11 Python
python 自动化将markdown文件转成html文件的方法
2016/09/23 Python
基于python实现在excel中读取与生成随机数写入excel中
2018/01/04 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
C语言笔试题
2014/09/04 面试题
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
法制宣传月活动总结
2014/04/29 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
医院员工辞职信范文
2015/05/12 职场文书
Python 阶乘详解
2021/10/05 Python