快速业务通道

用Xdebug修正PHP应用程序中的错误

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
使用星号 (*),例如 xdebug.dump_REQUEST=*。如果进一步将 xdebug.dump_undefined 设为 On 并且不设定指定的超全局变量,则仍用值 undefined 打印变量。

即使捕捉到异常,代码行 xdebug.show_exception_trace = On 仍将强制执行异常跟踪。代码行 xdebug.show_local_vars = 1 将打印每个函数调用的最外围中的所有局部变量,包括尚未初始化的变量 。而 xdebug.var_display_max_depth = 6 表示转储复杂变量的深度。

整合

清单 4 显示了 php.ini 文件的 Xdebug 的所有相关设置。

清单 4. php.ini 文件的设置

zend_extension = /usr/lib/php4/20020429/xdebug.so
xdebug.default_enable = On
xdebug.show_exception_trace = On
xdebug.show_local_vars = 1
xdebug.max_nesting_level = 50
xdebug.var_display_max_depth = 6
xdebug.dump_once = On
xdebug.dump_globals = On
xdebug.dump_undefined = On
xdebug.dump.REQUEST = *
xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT

将这些设置(或类似的内容)保存到 php.ini 文件中,然后重新启动 Web 服务器。

解释转储报告

以下示例显示了出错时发生的情况。把您的 “有待改进” 的代码修改为类似清单 5 所示的代码。

清单 5. 修改错误代码

<?php
  function deep_end( $count ) {
    // add one to the frame count
    $count += 1;
    if ( $count < 48 ) {
         deep_end( $count );
    }
    else {
        trigger_error( "going off the deep end!" );
    }
  }
  // main() is called to start the program,
  // so the call stack begins with one frame
  deep_end( 1 );
? >

如果运行这段新代码,您应当会看到大量信息,如下所示:

图 3. 出错时超全局变量、堆栈和局部变量的转储

用Xdebug修正PHP应用程序中的错误

传递给 trigger_error 的消息文本显示在顶部。底部是受请求的 用Xdebug修正PHP应用程序中的错误 - 凌众科技

快速业务通道

用Xdebug修正PHP应用程序中的错误

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

SERVER 元素列表和已经定义的 用Xdebug修正PHP应用程序中的错误 - 凌众科技
快速业务通道

用Xdebug修正PHP应用程序中的错误

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

REQUEST 元素列表。最底部是 #48 范围中的变量列表,这是根据清单对 deep_end() 进行的调用。在 调用中,$count 是整数 48。当此 Xdebug 配置就绪后,您现在有更多的线索可以跟踪犯罪者。

下面是另外一个技巧:Xdebug 提供了一个增强型 var_dump() 函数,它对于 PHP 数组和类尤为有帮 助。例如,清单 6 显示了简单的(PHP V4)类和实例。

清单 6. PHP V4 类和实例

<?php
  class Person {
    var $name;
    var $surname;
     var $age;
    var $children = array();
    function Person( $name, $surname, $age, $children = null) {
      $this->name = $name;
       $this->surname = $surname;
      $this->age = $age;
      foreach ( $children as $child ) {
        $this->children[] = $child;
      }
    }
  }
  $boy = new Person( ''Joe'', ''Smith'', 4 );
  $girl = new Person( ''Jane'', ''Smith'', 6 );
  $mom = new Person( ''Mary'', ''Smith'', 34, array( $boy, $girl ) );
  var_dump( $boy, $mom );
?>

清单 7 显示了 var_dump() 的输出。

清单 7. var_dump() 输出

object(person)
 var ''name'' => string ''Joe'' (length=3)
 var ''surname'' => string ''Smith'' (length=5)
 var ''age'' => int 4
 var ''children'' =>
   array
   empty

object(person)
 var ''name'' => string ''Mary'' (length=4)
 var ''surname'' => string ''Smith'' (length=5)
 var ''age'' => int 34
 var ''child

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号