问题描述
我很新的插件创作,并且很难调试。
我使用了很多回声,它是马虎和丑陋。
我相信有一个更好的方式来做到这一点,也许一个 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。