問題描述

我很新的外掛創作,並且很難除錯。

我使用了很多回聲,它是馬虎和醜陋。

我相信有一個更好的方式來做到這一點,也許一個 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。