中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 网页编程 -> PHP编程 -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ASP编程 · .NET编程
· PHP编程 · JSP编程
· CGI 专区
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· 《PHP程序设计》序
· 《PHP程序设计》第一...
· 《PHP程序设计》 第...
· 《PHP程序设计》 第...
· 《PHP程序设计》 第...
· 《PHP程序设计》 第...
· PHP程序员的优化调试...
· [组图] PHP程序员的优化调试...
· [组图] PHP程序员的优化调试...
· PHP程序加速探索之压...
PHP程序员的优化调试技术和技巧(2)
作者:不详  来源:不详  发布时间:2006-8-14 11:02:08  发布人:chinazhan

 减小字体 增大字体

     您现在的位置:天新网 > 软件开发 > Web开发 > PHP开发
  PHP程序员的优化调试技术和技巧
  http://dev.21tx.com 2006年01月25日 IBM Tyler Anderson
  
  [被屏蔽广告]
  
  
  
  
  
  每日文章精萃
  .Net:ASP.NET入门随想六之大航海家 Java:几种主要EJB Container的介绍
  ASPAsp Object 之:Request.Cookies PHPPHP4.04 新增加了专用的字符函数 Cty
  JSP:利用标记库国际化JSP(1) CGI:跟我学Perl(一)
  VB:菜鸟的数据库入门 VC:MFC下DirectX DirectInput的实现
  
  
  上一页 1 2 3 4 下一页
  
  测试错误报告
  
    如果启动了错误报告,会节约许多时间。PHP 中的错误会指向代码中的错误。请创建一个简单的 PHP 文件 test.php,并像清单 1 所示一样定义它。
  
  清单 1. 一个生成错误的简单 PHP
  
  <?php
  print("The next line generates an error.<br>");
  printaline("PLEASE?");
  print("This will not be displayed due to the above error.");
  ?>
  
  
  
    第一个 print() 语句会向 Web 浏览器显示它的内容。但是第二个语句会生成错误并在 Web 页面上显示。这造成最后一个 print() 语句不起作用,如图 1 所示。
  
  
  
  现在开启了错误报告!接下来,用 print 语句帮助调试应用程序。
  
    介绍 print 语句
  
    因为应用程序中的功能性 bug 不会产生错误,所以在所有调试策略中,关于如何正确地放置和使用 print 或 die 语句来调试 PHP 应用程序的知识是一种很好的资产。可以用 print 语句在代码中缩小对问题语句的定位,这些语句在语法上没有错误,也不是 bug,但是从代码的功能上看是 bug。这些是最难发现和调试的 bug,因为它们不会抛出错误。惟一知道的就是在浏览器上显示的内容不是想要的内容,或者想要保存在数据库中的内容根本没有保存。
  
    假设正在处理通过 GET 请求发送过来的表单数据,想向浏览器显示信息,但是出于某种原因,数据没有正确地提交,或者不能正确地从 GET 请求中读出。要调试这类问题,重要的是用 print() 或 die() 语句知道变量的值是什么。
  
    die() 语句会中止程序执行,并在 Web 浏览器上显示文本。如果不想注释掉代码,而且只想显示到出错之前的信息和出错信息,不想显示后面的信息,那么 die() 语句特别有用。
  
    让我们在 PHP 中用 print 语句来测试这个概念
  
    使用 print 语句进行调试
  
    在我作程序员的那些时候,当我在 Linux? 上开发应用程序时,没有方便的 GUI 可以告诉我 bug 在哪,我迅速地发现我在程序中放的 print 语句越多,我在应用程序中把 bug 的范围缩小到一行的机会越大。请创建另一个 PHP 文件 test2.php,并像清单 2 所示的那样定义它。
  
  清单 2. 显示通过 GET 提交的所有变量
  
  <?php
   $j = "";
   print("Lets retrieve all the variables submitted to this ");
   print("script via a GET request:<br>");
   foreach($_GET as $key => $i){
   print("$key=$j<br>");
   }
   if($_GET['Submit'] == "Send GET Request")
   $j = "done!<br>";
  ?>
  <form method="GET">
   Name: <input name="name"><br>
   Email: <input name="email" size="25"><br>
   <input name="Submit" type="submit" value="Send GET Request">
  </form>
  
  
  
    您可能会非常容易地发现清单 2 中的 bug!您很棒!但请注意这是一个非常简单的脚本,只是作为使用 print 语句进行调试而展示的一个例子而已。这个脚本只是提取 GET 请求中的所有变量,如果有,就把它们显示在浏览器上。还提供了一个表单,用 GET 请求向服务器发送变量以进行测试。请看输出,如图 2 所示。
  
  
  
   现在单击 Send GET Request 按钮,请注意只有 $_GET 请求的键显示在浏览器上,而正确的值都没显示。可以在循环中放一个 print 语句,检验在 foreach 循环中每个元素中是否确实存在数据。请参阅清单 3。
  
  清单 3. 用 print 语句验证代码的功能
  
  ...
   foreach($_GET as $key => $i){
   print("Correct data? " . $_GET[$key] . "<br>");
   print("$key=$j<br>");
   }
  ...
  
  
  
    放进去的 print 语句是粗体。注意,现在已经知道在 Web 浏览器上显示的 $key 值是正确的,但是由于某些原因,值没有正确地显示。请看新的输出,如图 3 所示。
  
  
  
   现在已经知道应用程序正确地从 GET 请求接收到了变量,那么肯定是在代码中有 bug。查看之后注意到,用来显示值的变量 $j 是错误的。在 foreach 语句中指定的是 $i,所以它肯定会有正确的值,但是无意之中输入了 $j。所以通过把 $j 替换成 $i,迅速地修正了错误,重新载入页面之后,就看到了正确的输出,如图 4 所示。
  
  现在可以删除或注释掉刚才添加的 print 语句了,因为已经发现了代码中的 bug。注意,这只是在调试应用程序时可能遇到的许多错误中的一个很小的子集。对于使用数据库时可能遇到的问题,一个好的解决方案是输出 SQL 语句,以确保执行的 SQL 就是想要执行的。
  
    现在要来看看如何使用 Eclipse IDE 和 PHPEclipse 插件及调试器扩展进一步在调试历程中提供帮助。
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。

 
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .