プラグインをどのようにデバッグしますか?


49

私はプラグインのオーサリングは初めてで、デバッグに苦労していました。

私は多くのエコーを使用しましたが、それはずさんでandいです。

プラグインを含めてサイト全体を実行できるデバッガーを備えたIDEがこれを実現するより良い方法があると確信しています。


1
私は、WordPressを完全にIDE内で実行するIDEを見たことはありません...それは素晴らしいでしょう。WAMPをローカルで実行してプラグインをデバッグし、Dreamweaverでコードを作成します。WP_DEBUGJohnが推奨しているように、falseに設定すると、スクリプト内で何が問題になっているのか(もしあれば)かなりよくわかります。次に、Dreamweaverで編集し、ブラウザーでCtrl + Sを押してからF5を押して、変更をすぐに表示します。
EAMann

1
@EAMann-PhpEd(Windowsの場合)とPhpStorm + XDEBUG(Mac、Linux、Windowsの場合)の両方を必ずチェックしてください。
MikeSchinkel

回答:


21

wp-config.phpに移動して、に変更define('WP_DEBUG', false);define('WP_DEBUG', true);ます。また、Andrew NacinのLog Deprecated Noticesプラグインをインストールします。


12
Nacinの他の記事もご覧
kevtrout

PHP 5.4以降では、おそらくE_STRICT通知が殺到します。この要点をプラグインフォルダーにドロップし、アクティブにして厳密な通知を削除し、非アクティブにして通常のサービスに戻ります。
webaware

12

エラーが出力される場合、x-debugはPHPに最新のバックトレースを追加する素晴らしいPHP拡張です。

エラーのない場所で何が起こっているのかを解決しようとする場合、私のお気に入りのアプローチは、出力をファイルに記録する関数を定義することです。したがって、plog($ variable)を実行すると、ログファイルに表示されます。これは、header()が呼び出される前に起こったことを解決しようとするとき、またはSTDOUTに出力できない他の状況で特に役立ちます。


10

xdebug + NetBeans IDEを使用します。完全に構成したら(簡単に実行できます)、プラグインにブレークポイントを設定し、ブレークポイントで変数を監視できます。それはプラグインやPHPアプリケーションをデバッグするための最良の方法だと思います。


6

昔ながらの方法であるerror_log()ingとvar_dumping をデバッグします。それが私にとって最も効率的な方法であることがわかりましたerror_log。配列とオブジェクトの作成が苦痛になる可能性があるため、さまざまなタイプのデータを処理するためのラッパー関数がいくつかあります。また、print_r()in を使用することは、aにない場合は読みにくいことがあり<pre>ます。私は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 );または何でも。


5

いくつかのIDEをいじくり回した後、私は非常にカスタマイズされた構文強調表示の配色を使用して、普通の古いNotepad ++に落ち着きました。

Shift-Ctrl-Xを押すと、カーソルがある場所に次のコードが出力されるようにマクロが設定されています。

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

簡単ですが、このマクロとWP_DEBUGを有効にすると、一般にバグの90%を追い詰めることができます。


2
いい動きだ。エディターのキーボードホットキーはロックされています!
ハクレ

1
print_r($var, true)代わりにで与えられる出力を好みvar_dumpます。
ブラソフィロ

5

ログファイルを作成するための小さなクラスを作成しました。これは、ajax呼び出しをデバッグするときに非常に役立ちます。

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

次のようなことだけを行う必要があります。

Debug :: log( "これはデバッグメッセージです");

その行が実行されると、メッセージがログファイルに追加され、その後、tailコマンドを使用できます(UNIXスタイルのオペレーティングシステムを使用している場合)

tail -f mylogfile.log

この関数に配列またはオブジェクトも渡すことができる場合。

ログファイルを保存するパスの行20を変更する必要があることに注意してください。


3

LinuxではAptane IDEを、WindowsではUltraEditを使用しますが、これにはPHPパーサーもあります。また、でWP_DEBUG定義された定数でxDebugからのすべてのヒントを表示しwp-config.phpます。

このトピックに関する私の投稿も参照してください。コメントして、開発ツールに関するフィードバックを送ってください。




1

私がお勧めできる2つのIDEがあり、両方を広範囲に使用しました:PhpED(Windowsのみ)とPhpStorm + XDEBUG(Mac、Windows、Linux)。

両方ともロック!PhpStormは2010年9月までは49ドルで、その後は99ドルでした。Windowsを使用していて、再度選択する必要があった場合、どちらを選択するかはわかりません。

率直に言って、これら2つのツールのいずれかを使用していないプラグイン開発者は、特にWordPressプラグインの開発が比較的新しい場合、重度の障害があると感じざるを得ません。


1

Krumo-スタイル付きのPHPデバッグクラス

別の本当に素晴らしいことは、 "krumo" phpクラスです。½分で実装され、あらゆる種類の変数をデバッグする簡単な方法を提供します。

  • オブジェクト、
  • 配列、
  • strings / float / integer / etc。

さらに、バックトレースに役立ち、ロードされたクラスまたはインクルードされたファイルとすべてをオンデマンドで表示します。

さらに、無料です!

ダウンロード

クルモ@sourceforge


0

ThemeForestで購入できるLogPressという13ドルのプラグインを使用していますが、これは絶対に神からの送信です。プラグインとサイトに関連するすべてをデバッグできます。Firebugコンソールのログ記録などをサポートします。私はそれなしでは生きていけません。それがこのプラグインの使用量です。

このプラグインはおそらく私が今まで使った中で最高のお金であり、Wordpressプラグインの開発で数え切れないほどの時間を節約しました。


うわー、私はまったく関係のない有料のプラグインを推奨するために落胆しましたか?それは少しヘビーハンドじゃないですか?
ドウェインチャーリントン

私は投票ではありませんが、驚くことはありません。プラグインを販売しようとしているかのように言葉を使用しています。物事を推奨することは問題ありませんが、「絶対的な神の送信」のように激しく売り込みます。人々は広告が嫌いです。言語をトーンダウンするだけで、推奨事項はそれ自体を語ります。
icc97

0

私はphpEDとxdebugを使用していますが、私にとって(そして他の人にとってはそうです)プラグインやテーマのファイルをデバッグすることは不可能です!デバッガーは、メインまたは元の「コア」ファイルにあるブレークポイントでのみ停止します!誰も私を助けることができますか?


0

まずdefine('WP_DEBUG', false);、関連する本番サイト(ファイルとデータの両方)の最近のコピーであるローカルインストールに(ほとんどの人が言っているように)wp-config.phpファイルに追加します。これにより、作業が迅速、安全、分離されますが、プラグインが実際に使用される少なくとも1つの場所を十分に反映しています。

また、いくつかのデバッグバーアドオン(たとえば、一時的なもの)のいくつかと一緒に、デバッグバープラグインを追加します(プラグインに応じて)。

また、Firefox用のFirebugアドオンを使用します。これは、HTML、CSS、およびJavaScriptの問題を追跡し、レイアウトの異常を調べるのにも役立ちます。

私は職場と自宅の両方で15年以上コーディング(PHPからSQLまで)のために15年以上使用してきたUltraEditを使用してコーディングしているので、これは私にとってはうまく機能しますが、多くの人々。構文の強調表示、自動補完、コードレイアウト機能、HTMLやCSSのショートカットツールがあり、タイプミスなどを防ぐことができます。ほとんどの場合、これは私に親しみをもたらします。これは、新しいものへの急ぎで見落とされることが多い重要な側面です。マッスルメモリは、コーディングにおいても再現性を高めます。

そしてもちろん、私は通常、適切な見本の別のタブでコーデックスから適切なページを開いています。

これらはすべて、さまざまな方法でコーディング、解析、機能、およびレイアウトのエラーを強調するのに役立ち、コーディング方法や何も間違いがない場合はあまり干渉しません。後で再訪する何かを試したり回避したりする場合、ほとんどは無視または非アクティブにすることができます。

ああ、適切に配置されたechoまたはprint_rがキーで何かをチェックしても問題はありません(完了時に削除する限り)。


0

チェックアウトクエリモニタと組み合わせて拡張クエリモニタをワードプレスの総合的なデバッグのために(PHPのエラー/通知/ stricts /警告、データベースクエリ、パス、定数、HTTPリクエスト、トランジェントは、セッション変数は、varはダンプを)。

また、投稿に関する特定の情報については、すべての投稿メタおよび保存するプラグインを確認してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.