`

php 断点调试工具配置之三

 
阅读更多

调试简单的脚本或 Web 应用程序

现在,您的工作空间中已经有一些样例项目。您应该已经熟悉 PHP Debug 透视图。您已经成功安装了 XDebug 或 Zend Debugger(或同时安装了两者),并进行了适当的配置和检验。最后,配置好 PDT,使它可以使用已安装的调试器。完成所有这些操作后,现在可以开始调试您的第一个 PHP 脚本了。

设置断点来调试脚本

要查看调试器的工作原理,最好设置一个断点,调试器将在此处停止。当调试器在某处断点停止时,可以使用 PHP Debug 透视图中的各个视图查看变量值。还可以使用 Debug 视图中的按钮对代码进行单步调试。

因此在 helloworld.php 脚本的第 7 行设置一个断点。要执行这个操作,选择 helloworld.php,然后选择Run > Debug As > PHP Script。如果这是第一次调试,Eclipse 将询问是否希望自动切换到 PHP Debug 透视图。如果希望在调试一个 PHP 脚本时激活 PHP Debug 透视图,则单击Yes,然后选择Remember my decision,如下所示。


图 15. 自动切换到 Debug PHP 透视图
自动切换到 Debug PHP 透视图

开始调试后,PHP 脚本将在第一行代码处停止。这是默认配置。您可以在这里单步调试代码或继续前进到下一个断点。如果继续前进到在第 7 行设置的断点,Debug 视图会告诉您在一个断点处暂停。


图 16. 断点处暂停(第 7 行)
断点处暂停(第 7 行)

在断点处暂停时,查看 Variables 视图(参见图 17)。$name$i两个变量都出现在循环中,并且可以查看它们的值。$name变量包含字符串world,而$i变量被设置为0


图 17. helloworld.php 第 7 行的变量
helloworld.php 第 7 行的变量

由于断点位于循环的内部,必须在循环的下一次迭代中才能执行到下一个断点。您可以在 Variables 视图中看到$i值在逐渐变大。

要继续执行而不在每次迭代时停止,请打开 Breakpoints 视图,如图 18 所示。通过清除 helloworld.php(第 7 行)旁边的复选框,可以临时禁用断点。现在,当再次执行到下一个断点时,调试器将跳过以后的所有迭代,并运行直至脚本结束。


图 18. helloworld.php 中的断点
helloworld.php 中的断点

您可以添加变量并修改代码进行试验,查看调试器的行为。

 

调试 Web 应用程序

有时您可能希望使用 PHP 构建一个 Web 应用程序,并在服务器上调试 PHP 脚本。在服务器上调试 PHP Web 页面可以查看服务器变量(比如$_GET$_POST)是如何设置的,因此可以了解这些变量的值并且可以逐页进行调试。

要调试一个 PHP 应用程序,请使用 webDebugExample 项目。这是个简单的示例,允许在输入字段键入值,然后把表单提交给 results.php 脚本处理。完成这个练习后,可以了解如何使用来自表单的变量名和变量值填充$_POST变量。

选择 enterGreeting.php,然后选择Run > Debug As > PHP Web Page。如果这是第一次运行调试器,系统将提示您启动文件的 URL。这里,输入文件的完整 URL,注意,它位于 Web 资源所在的位置。例如,我的 URL 是 http://localhost/~nagood/webDebug/enterGreeting.php。接下来,在 results.php 文件的第 14 行设置一个断点。


清单 9. 在第 14 行设置一个断点

                    
print ("<b>Your greeting is:  <i>" . $gm->getFormalGreeting() 
    . "</i></b>");

 

在启动 PHP Web 应用程序时,调试器将停在 enterGreeting.php 文件的第一行。您可以通过单步调试查看调试器的操作,或一直执行到结束。

在表单的文本输入框输入一个值,然后单击Submit。现在调试器停在 results.php 文件的第一行。执行到脚本中第 14 行设置的断点,将看到$gm变量使用一个值填充,而$_POST数组包含来自前一页面的值。


图 19. results.php 中的变量
results.php 中的变量

从第 14 行开始,可以执行到程序结束,或可以单击 Debug 视图中的Step Into以便进入到GreetMaster2000类的getFormalGreeting()函数。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics