zoukankan      html  css  js  c++  java
  • PHP程序员的优化调试技术和技巧

     

    使用调试器,可以设置断点并查看 PHP 代码到所设断点之前的浏览器输出。然后可以继续代码的执行并查看到下一断点之前的浏览器输出,然后再到下一个,直到 PHP 脚本完成。

      现在把 “设置” 一节中在 php.ini 中注释掉的行取消注释,并重新启动 Apache。现在装入了调试器,Eclipse 能够和它挂上了。

      现在在 Eclipse 中设计调试环境。请创建新的 test4.php 文件,先保持为空。现在单击 Run > Debug。在左侧面板中选择 PHP DBG Script,并单击 New。现在转到 File 选项卡,输入当前项目 debugArticle 以及想要调试的文件 test4.php。现在转到 Environment 选项卡,然后再到 Interpreter 子选项卡。在 PHP 的安装目录中找到 php.exe 文件(我的是 c:/apps/php5.0.3/php.exe)。现在单击 Remote Debug 子选项卡,选择 Remote Debug,如果没有使用 Windows,请取消 “Open with DBGSession URL in internal browser box” 复选框。把 Remote Source 路径设置成与要测试的 PHP 脚本的绝对路径(不是 Web 路径)相同(我的设置是 c:/www/debugArticle/test4.php)。现在单击 Debug。

      现在应当装入 Debug 透视图,如图 8 所示。否则,请单击 Window > Open Perspective > Other,并选择 Debug。

    图 8. Eclipse 中的 Debug 透视图

      现在可以设置断点了。

      对于本文中使用的插件和扩展的版本,断点功能是必需的,因为 PHP 在把输出发送到浏览器之前会缓冲它。除此之外,需要做的不仅仅是设置一个断点把当前显示数据刷新到 Web 浏览器,所以要像下面和图 8 所示那样定义 test4.php。

    清单 4. 设置和创建断点

    <?php function break-point(){ ob_flush(); flush(); sleep(.1); debugBreak(); } print("This will get shown first, "); print("as will this<br>"); breakpoint(); print("This won't get shown until after "); print("continuing the break-point<br>"); breakpoint(); print("END!"); ?

      breakpoint() 函数会把缓冲的输出和其他缓冲的数据刷新到 Web 浏览器。对 sleep(.1) 的调用是必需的,这样代码中止于 debugBreak() 之前,服务器才有足够的时间把数据刷新到 Web 浏览器,这个函数是前面下载的 PHP 调试器扩展的内部函数。这样,调用 breakpoint() 会把 HTML 块、print() 和 echo() 语句的数据刷新到浏览器,然后中止代码执行。

      在像清单 4 那样编写完代码之后,可以打开浏览器并指向 test4.php,或者可以查看 PHP 浏览器窗口(我的是 http://localhost/debugArticle/test4.php)。每次输入和保存文件时,在 PHP 浏览器窗口中就已经启动了调试序列。如果不使用 Windows,请通过浏览器查看 test4.php。在保存了文件之后,用 F8 或单击 Run > Resume 继续代码执行。持续这么做,直到最后一行输出是 END! 为止(参见图 9、10 和 11)。

    图 9. 初始的到第一个断点的 PHP 浏览器输出

      请注意图 9 中的 Debug 窗口如何把执行显示为挂起的。

    图 10. 第一个断点之后到第二个断点之前的 PHP 浏览器输出

      图 10 的 Debug 窗口仍然把执行显示为挂起,而第二组数据显示在 PHP 浏览器中。

    图 11. 完整的 PHP 浏览器输出

      注意,图 11 的 Debug 窗口中的代码不再挂起,整个脚本已经执行,如图 11 中的 PHP 浏览器所示。

      既然已经看到了用 PHPEclipse 和调试器扩展进行开发的优势,那么很难想像没有它会怎么样。

      结束语

      现在已经向 PHP 的调试技术集中添加了错误报告的运用、print 语句、PHPEclipse 和调试器扩展,您可以通过减少每行代码的错误数量,成为更有效的 PHP 编码人员。请参阅 参考资料 获得一些 PHP 教程,可以在上面测试这些新技能。

  • 相关阅读:
    cpuset
    top
    path-lookup
    strace
    IDR算法[原理]
    cgroup
    转载
    std::reverse_iterator::base
    可重入、不可重入
    chromium code 中 普遍使用的 C++11 语法
  • 原文地址:https://www.cnblogs.com/xieyunc/p/9126773.html
Copyright © 2011-2022 走看看