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
Dec 13 PHP
fgetcvs在linux的问题
Jan 15 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
php socket客户端及服务器端应用实例
Jul 04 PHP
PHP中echo和print的区别
Aug 28 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
Yii框架分页技术实例分析
Aug 30 PHP
php+ajax实现文件切割上传功能示例
Mar 03 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 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数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
如何在PHP中使用数组
2020/06/09 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
Python中pass语句的作用是什么
2016/06/01 面试题
库房主管岗位职责
2013/12/31 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
给公司的建议书范文
2014/05/13 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
工作会议简报
2015/07/20 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
python字符串常规操作大全
2021/05/02 Python