it-swarm.cn

你如何调试插件?

我对插件创作很新,并且很难进行调试。

我使用了很多回声,而且它很邋and和丑陋。

我确信有更好的方法可以做到这一点,也许是IDE带有调试器,我可以在包含插件的情况下运行整个站点?

47
Sruly

进入wp-config.php并将define('WP_DEBUG', false);更改为define('WP_DEBUG', true);。另外,安装Andrew Nacin的 Log Deprecated Notices plugin。

21
John P Bloch

如果你打印出错误,那么x-debug是一个很棒的PHP扩展,可以为PHP添加现代回溯。

如果您正在尝试找出没有错误的地方,我最喜欢的方法是定义一个将其输出记录到文件的函数。所以我做plog($ variable),然后出现在日志文件中,然后我可以检查。当您尝试计算调用header()之前发生的事情或其他无法打印到STDOUT的情况时,这尤其有用。

12
tomdxw

使用 xdebug + NetBeans IDE。完全配置后 - 这很容易 - 您可以在插件中设置断点并在断点处观察变量。我认为这是调试插件或任何php应用程序的最佳方法。

10
Raj

我调试老式的方式,error_log()ing和var_dumping。我觉得这对我来说是最有效的方式,我有几个包装函数来处理不同类型的数据,因为error_loging数组和对象可能很痛苦。此外,使用print_r() in时,如果它不在<pre>中,则很难阅读。我有tj_log()用于错误记录,而tj()用于显示输出(它基本上显示了一个可呈现的mannor中的任何数据类型:

function tj( $code ) {

    ?>
    <style>
        .tj_debug { Word-wrap: break-Word; white-space: pre; text-align: left; position: relative; background-color: rgba(0, 0, 0, 0.8); font-size: 11px; color: #a1a1a1; margin: 10px; padding: 10px; margin: 0 auto; width: 80%; overflow: auto; -moz-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -webkit-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -moz-border-radius: 5px; -webkit-border-radius: 5px; text-shadow: none; }
    </style>
    <br /><pre class="tj_debug">

    <?php
    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        var_dump( $code );

    else :
        print_r( $code );

    endif;

    echo '</pre><br />';

}

function tj_log( $code ) {

    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        $code = var_export( $code, true );

    else :
        $code = print_r( $code, true );

    endif;

    error_log( $code );

}

那么我就这样做:tj( $current_user );或者其他什么。

6
Joe Hoyle

我为make一个日志文件写了一个小类,在调试ajax调用时非常有用。

http://github.com/hunk/Magic-Fields/blob/master/tools/debug.php

你只需要做类似的事情:

Debug :: log(“这是一个调试消息”);

当执行该行时,该消息将添加到日志文件中,之后您可以使用tail命令(如果您使用的是某些unix的样式操作系统)

tail -f mylogfile.log

如果您也可以将数组或对象传递给此函数。

note 您需要更改要保存日志文件的路径的第20行

5
Gnuget

在修改了一些IDE之后,我选择了普通的老式 Notepad ++ 并使用超定制的Syntax Highlighting配色方案。

我有一个宏设置,当我按下Shift-Ctrl-X时,下面的代码输出我的光标所在:

echo "<pre>";
var_dump($);
echo "</pre>";
exit();

这很简单,但我通常可以使用此宏加上WP_DEBUG来捕获90%的错误。

5
SethMerrick

我在Linux上使用Aptane IDE,在Windows上使用UltraEdit,这个也有一个PHP解析器。此外,我使用WP_DEBUG中定义的常量wp-config.php查看xDebug中的所有提示。

另请参阅我的 关于此主题的帖子 并随时发表评论并提供有关您的开发工具的反馈。

3
bueltge

也不差: Eclipse 它接近PhpStorm +免费。

2
kaiser

我建议退房 FirePHP 。您可以通过HTTP标头将调试信息发送到Firefox的Firebug,这通常可以实现更清晰的调试输出。

2
Annika Backstrom

有两个我可以推荐的IDE,我已经广泛使用了这两个: PhpED (仅限Windows)和 PhpStorm + XDEBUG(Mac,Windows和Linux。)我现在在Mac上,所以只能使用后者。

他们俩都摇滚!好消息是PhpStorm在2010年9月之前是49美元,之后只有99美元。如果我在Windows上并且不得不再次选择,不确定我会选择哪个。

坦率地说,我不禁觉得任何不使用这两种工具之一的插件开发者都是严重缺陷的,特别是如果他们对开发WordPress插件相对较新的话。

1
MikeSchinkel

Krumo - 风格化的php调试类

另一个非常好的事情是“krumo”php类。它在½分钟内实现,并提供了一种简单的方法来调试所有类型的变量:

  • 对象,
  • 阵列,
  • 串/浮动/整数/等。

Plus 它有助于回溯,显示加载的类或包含的文件以及所有需要的内容。

它是免费的!

下载

Krumo @sourceforge

1
kaiser

首先,我将define('WP_DEBUG', false);添加到wp-config.php文件(正如大多数人所说的)到我的本地安装,这是相关生产站点的最新副本(包括文件和数据)。这使得东西快速,安全,独立,但至少反映了插件实际使用的一个地方。

我还添加了 Debug Bar plugin以及一些Debug Bar附加组件(例如Transients) - 适用于你的插件。

我还使用Firefox的Firebug插件,它非常适合帮助追踪html,css和JavaScript问题,同时也很适合查看布局怪异。

我使用UltraEdit进行编码,我在工作和家庭中使用了超过15年的时间进行了大量的编码(php到SQL),所以这对我很有用,但可能没有足够的我作为IDE对很多人来说。它具有语法高亮,自动完成和代码布局功能以及一堆html和css快捷工具,可以帮助避免拼写错误。大多数情况下,这给我带来了熟悉,这是一个经常被新时代忽视的重要方面。即使在编码中,肌肉记忆也有助于重复性。

当然,我通常会在一个合适的范例的另一个标签中打开一些来自codex的合适页面。

这些都有助于以不同的方式突出显示编码,解析,功能和布局错误,并且不会干扰我的编码方式或者如果没有任何问题。如果您正在尝试或解决稍后会重新访问的内容,则可以忽略或停用大多数内容。

哦,一个定位良好的echo或print_r来检查某个键的东西是没有错的(只要你在完成时删除它们)。

0
Lunc

签出 查询监视器 结合 查询监视器扩展 用于WordPress的全面调试(PHP错误/通知/严格/警告,数据库查询,路径,常量,HTTP请求,瞬态,会话变量,var转储) 。

还可以查看 所有帖子元保存什么 插件以获取帖子的特定信息。

0
Caleb

PHPStorm和Xdebug对我来说是一个改变WordPress开发的游戏。现在强烈推荐。特别是他们的内联调试工具。

0
Emanuel Rocha Costa

我正在使用phpED和xdebug,但对我来说(似乎对其他人来说)调试插件或主题文件是不可能的!调试器仅在主要或“原始”核心文件中的断点处停止!有人可以帮帮我吗?

0
Kreker