问题描述

我很新的插件创作,并且很难调试。

我使用了很多回声,它是马虎和丑陋。

我相信有一个更好的方式来做到这一点,也许一个 IDE 的调试器,我可以运行整个网站包括插件?

最佳解决方案

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

次佳解决方案

如果您收到错误打印,那么 x-debug 是一个辉煌的 PHP 扩展,为 PHP 添加了现代的追溯。

如果你想弄清楚没有出现错误的情况,我最喜欢的方法是定义一个将其输出记录到文件的功能。所以我做 plog($变量),并出现在日志文件中,然后我可以检查。当您尝试找出调用 header() 之前发生的情况或其他无法打印到 STDOUT 的情况时,这一点尤其有用。

第三种解决方案

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

第四种方案

我调试老式的方式,error_log() ing 和 var_dump ing 。我发现这是最有效的方式,我有几个包装函数来处理不同类型的数据,因为 error_log 的数组和对象可能会很痛苦。另外,当 print_r()不在<pre> 中时,使用 print_r()可能很难阅读。我有 tj_log()进行错误记录,tj()显示输出 (基本上显示任何数据类型在可呈现的甘露:

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 ); 或任何。

第五种方案

在修改了许多 IDE 之后,我使用 ultra-customized 语法突出显示配色方案,将其定义为普通旧的 Notepad++

我有一个宏设置,当我打 Shift-Ctrl-X,以下代码获取输出我的光标所在:

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

这很简单,但是我通常可以使用这个宏加上 WP_DEBUG 来追踪 90%的错误。

第六种方案

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

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

你只需要做一些事情:

Debug :: log(「这是一个调试消息」);

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

tail -f mylogfile.log

如果你也可以传递给这个函数一个数组或一个对象。

请注意,您需要更改要保存日志文件的路径的第 20 行

第七种方案

我在 Linux 上使用 Aptane IDE,在 Windows 上使用 UltraEdit,而且还有一个 PHP-parser 。另外,我用 wp-config.php 中定义的常量 WP_DEBUG 查看 xDebug 的所有提示。

另请参阅我的 post on this topic,并随时发表评论并提供有关您的开发工具的反馈。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。