Symfony、NetBeans 6.8 和调试网页

3
我正在使用Symfony(1.31)和Propel ORM构建网站。最近我从文本编辑器转到了Netbeans(6.8)作为我的开发环境。
来自编译语言(C++)背景的我,习惯于在代码中设置断点等作为调试的一部分。我遇到的Web开发(至少是PHP),调试通常是随意的 - 使用echo语句、将日志记录到文件等等。我听说可以调试PHP(即设置断点等)。
我已经搜索过网络上的文档,以展示如何设置断点(例如在MVC层之一中),以便在通过浏览器打开相关页面时,断点将被击中,我可以逐步执行代码(理想情况下,查看程序变量)。
在Symfony和Netbeans 6.8中是否有可能实现这一点?

是的,这是可能的。顺便问一下,你是否已经设置好了xdebug扩展(http://xdebug.org)? - Andrei Dziahel
4个回答

1

以下是帮助我调试Symfony应用程序的方法:

通过apps/appname/config/settings.yml启用日志记录和Web调试工具栏。注意:任何更改都需要清除缓存。

dev:
    .settings:
        web_debug:              true
        logging_enabled:        true

使用var_dump()或print_r()与pre标签一起,可以从任何地方转储数据。添加exit;将允许您从控制器或任何其他地方转储变量。
echo '<pre>';
vardump($something);
echo '</pre>';
exit;

启用日志记录和日志消息。您可以在任何地方访问记录器,但请确保为您的环境启用日志记录:

sfContext::getInstance()->getLogger()->info($message);

1

Cyro,你能否在这里简要概述一下如何使用Symfony、Netbeans和XDebug使断点正常工作?此外,你运行了什么样的测试(例如,你是否像我描述的那样进行测试——设置断点并打开页面)?我期待着你的回复,因为我真的希望能够做到这一点。 - Stick it to THE MAN
安装WAMP的PHP 5.2版本的XDebug。在php.ini中添加配置并重新启动Apache。检查phpinfo()以确保它被加载(搜索“xdebug”)。在index.php web控制器中添加测试echo语句。将我的项目设置为主项目。按Ctrl+F5开始调试。NetBeans会在浏览器中启动我的项目URL,但页面正在等待,返回NetBeans并进入调试模式。按继续(F5)将执行推到我的断点。现在NetBeans在我的断点处,我可以查看Watches、Variables和Call Stack选项卡以获取更多信息或步入我的代码。就是这样。 - nortron
我刚刚在特定的操作中使用断点测试了它,也在那里工作得很好。一旦进入调试模式,请在带有断点的操作URL后附加?XDEBUG_SESSION_START=netbeans-xdebug,并确保NetBeans从请求的开头开始捕获它。 - nortron

0

Netbeans 7+在模型/操作中使用xdebug断点时存在问题。您必须使用手动功能来设置断点。

xdebug_break();

0

我曾经在使用PHP时,将Gubed与Quanta+一起作为步进式调试器,但不知道是否可以在Netbeans中使用。我认为这样做更麻烦而不值得。我发现,我可以通过for(i=0;i<~6;i++) {dump stuff to screen/log; make changes; reload;}来解决问题,比用调试器单步调试要快得多。

Xdebug是一个非常有用的PHP扩展,具有支持某些编辑器的远程调试器,尽管Neatbeans没有列出。我没有使用Xdebug的远程调试元素(请参见上文),但我发现它的分析、代码覆盖和特别是改进的浏览器错误消息非常有帮助。

通常情况下,我发现使用Symfony时,可以通过堆栈跟踪或将项目放入记录器中并使用调试工具栏firesymfony来获取大部分所需信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接