如何调试PHP脚本?
我知道基本的调试技巧,例如使用错误报告。在PHPEclipse中使用断点调试也非常有用。
在phpStorm或其他IDE中,哪种方法是最佳的(以快速简便为标准)?
如何调试PHP脚本?
我知道基本的调试技巧,例如使用错误报告。在PHPEclipse中使用断点调试也非常有用。
在phpStorm或其他IDE中,哪种方法是最佳的(以快速简便为标准)?
我使用带有XDebug的Netbeans和Easy XDebug FireFox插件
在调试MVC项目时,这个插件非常关键,因为XDebug在Netbeans中正常运行的方式是通过URL注册调试会话。安装了FireFox插件后,您可以设置Netbeans项目属性-> Run Configuration-> Advanced并选择“不打开Web浏览器”。现在您可以像往常一样使用Ctrl-F5设置断点并开始调试会话。打开FireFox并右键单击右下角的Add-on图标以开始监视断点。当代码达到断点时,它将停止,您可以检查变量状态和调用堆栈。
输出缓冲非常有用,如果您不想弄乱您的输出。我可以以一行代码的形式进行此操作,随意添加或删除注释。
ob_start();var_dump(); user_error(ob_get_contents()); ob_get_clean();
PhpEdit内置了调试器,但我通常以老式的方式使用echo();和print_r();
对于那些使用print_r/echo方法解决起来太费时间的问题,我会使用我的IDE(PhpEd)的调试功能。与我使用过的其他IDE不同,PhpEd几乎不需要任何设置。我之所以不在遇到的所有问题中都使用它,唯一的原因是它非常慢。我不确定这种缓慢是具体针对PhpEd还是任何php调试器。PhpEd不免费,但我相信它使用了一个开源调试器(如前面提到的XDebug)。再次强调,PhpEd的好处在于它不需要任何设置,而我发现在过去这确实非常繁琐。
var_dump()
和debug_print_backtrace()
是您需要为逻辑武装的所有工具。当无法使用Rails时,我经常使用CakePHP。为了调试错误,我通常会在tmp文件夹中找到error.log
,并在终端中使用命令tail来查看...
tail -f app/tmp/logs/error.log
它可以在运行过程中提供对cake的详细对话,这非常方便。如果要在代码中输出某些内容,则可以使用此功能。
$this->log('xxxx');
这通常可以让你很好地了解正在发生或出现了什么问题。
嗯,在某种程度上这取决于问题出现的位置。这是我尝试隔离的第一件事,然后根据需要使用echo/print_r()。
NB: 你们知道可以将true作为print_r()的第二个参数传递吗?它会返回输出而不是打印它。例如:
echo "<pre>".print_r($var, true)."</pre>";
有许多PHP调试技术可以在编码时节省无数小时。一种有效但基本的调试技术是简单地打开错误报告。另一种稍微更高级的技术涉及使用打印语句,它可以通过显示实际上正在屏幕上发生的事情来帮助定位更难以捉摸的错误。PHPeclipse是一个Eclipse插件,可以突出显示常见的语法错误,并可与调试器一起使用以设置断点。
display_errors = Off
error_reporting = E_ALL
display_errors = On
并且也被使用
error_log();
console_log();
打印调试回溯信息:
类似这样的代码: