it-swarm.dev

Wie debuggen Sie Plugins?

Ich bin ziemlich neu im Plugin-Authoring und hatte Schwierigkeiten beim Debuggen.

Ich habe viel Echo benutzt und es ist schlampig und hässlich.

Ich bin sicher, es gibt einen besseren Weg, dies zu tun, vielleicht eine IDE mit einem Debugger, mit dem ich die gesamte Site einschließlich des Plugins ausführen kann?

47
Sruly

Gehe in die wp-config.php und ändere define('WP_DEBUG', false); in define('WP_DEBUG', true);. Installieren Sie auch das Log Deprecated Notices Plugin von Andrew Nacin.

21
John P Bloch

Wenn Fehler ausgegeben werden, ist x-debug eine brillante PHP -Erweiterung, die PHP moderne Backtraces hinzufügt.

Wenn Sie versuchen, herauszufinden, was los ist, wenn keine Fehler vorliegen, besteht mein bevorzugter Ansatz darin, eine Funktion zu definieren, die die Ausgabe in einer Datei protokolliert. Also plog ich ($ variable) und das erscheint in der Logdatei, die ich dann untersuchen kann. Dies ist besonders nützlich, wenn Sie herausfinden möchten, was passiert ist, bevor header () aufgerufen wird, oder wenn Sie nicht in STDOUT drucken können.

12
tomdxw

Verwenden Sie xdebug + NetBeans IDE. Bei vollständiger Konfiguration - was einfach zu tun ist - können Sie Haltepunkte in Ihrem Plugin setzen und Variablen an den Haltepunkten beobachten. Ich denke, es ist der beste Weg, um Plugins oder PHP-Anwendungen für diese Angelegenheit zu debuggen.

10
Raj

Ich debugge auf die altmodische Weise, error_log()ing und var_dumping. Ich finde, dass dies der effizienteste Weg für mich ist. Ich habe ein paar Wrapper-Funktionen, um mit verschiedenen Arten von Daten umzugehen, da error_loging-Arrays und -Objekte schmerzhaft sein können. Außerdem kann es schwierig sein, print_r() in zu lesen, wenn es sich nicht in einem <pre> befindet. Ich habe tj_log() für die Fehlerprotokollierung und tj() für die Anzeige der Ausgabe (die im Grunde jeden Datentyp auf anzeigbare Weise anzeigt:

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 );

}

Dann mache ich einfach: tj( $current_user ); oder was auch immer.

6
Joe Hoyle

Ich habe eine kleine Klasse geschrieben, um ein Logfile zu erstellen. Dies ist sehr nützlich, wenn Sie Ajax-Aufrufe debuggen.

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

Sie müssen nur Folgendes tun:

Debug :: log ("Dies ist eine Debug-Meldung");

Wenn diese Zeile ausgeführt wird, wird eine Nachricht in die Protokolldatei eingefügt. Anschließend können Sie den Befehl tail verwenden (wenn Sie ein Betriebssystem im Unix-Stil verwenden).

tail -f mylogfile.log

Wenn Sie dieser Funktion auch ein Array oder ein Objekt übergeben können.

note Sie müssen die Zeile 20 für einen Pfad ändern, in dem Sie Ihre Protokolldatei speichern möchten

5
Gnuget

Nachdem ich an einer Reihe von IDEs herumgebastelt hatte, entschied ich mich für einfaches Notepad ++ mit einem ultra-angepassten Syntax Highlighting-Farbschema.

Ich habe ein Makro so eingerichtet, dass wenn ich Shift-Ctrl-X drücke, der folgende Code dort ausgegeben wird, wo sich mein Cursor befindet:

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

Es ist einfach, aber ich kann im Allgemeinen 90% meiner Fehler mit diesem Makro und aktiviertem WP_DEBUG aufspüren.

5
SethMerrick

Ich benutze Aptane IDE unter Linux und UltraEdit unter Windows, und dieses hat auch einen PHP-Parser. Außerdem zeige ich alle Hinweise von xDebug mit der in WP_DEBUG definierten Konstante wp-config.php an.

Siehe auch mein Beitrag zu diesem Thema und zögern Sie nicht, Kommentare abzugeben und Feedback zu Ihren Entwicklungswerkzeugen zu geben.

3
bueltge

Nicht so schlimm auch: Eclipse Es ist in der Nähe von PhpStorm + kostenlos.

2
kaiser

Ich empfehle dir FirePHP . Sie können Debug-Informationen über HTTP-Header an Firefoxs Firebug senden, was in der Regel zu einer saubereren Debug-Ausgabe führt.

2

Es gibt zwei IDEs, die ich empfehlen kann, und ich habe beide ausgiebig verwendet: PhpED (nur Windows) und PhpStorm + XDEBUG (Mac, Windows und Linux.) Ich bin jetzt auf dem Mac und kann sie nur verwenden Letzteres.

Beide ROCK! Die gute Nachricht ist, dass PhpStorm vor September 2010 49 US-Dollar und danach nur noch 99 US-Dollar kostet. Wenn ich unter Windows wäre und erneut wählen müsste, bin ich mir nicht sicher, welche ich wählen würde.

Ehrlich gesagt kann ich nicht anders, als das Gefühl zu haben, dass jeder Plugin-Entwickler, der keines dieser beiden Tools verwendet, schwerwiegende Behinderungen hat, insbesondere, wenn er noch relativ neu in der Entwicklung von WordPress-Plugins ist.

1
MikeSchinkel

Krumo - die gestylte PHP-Debug-Klasse

Eine andere wirklich nette Sache ist die "krumo" PHP-Klasse. Es ist in einer halben Minute implementiert und bietet eine einfache Möglichkeit, alle Arten von Variablen zu debuggen:

  • gegenstände,
  • arrays,
  • strings/float/integer/etc.

Plus Es hilft beim Zurückverfolgen, zeigt geladene Klassen oder eingeschlossene Dateien und alles auf Anfrage.

Plus es ist KOSTENLOS!

Herunterladen

Krumo @sourceforge

1
kaiser

Check out Query Monitor kombiniert mit Query Monitor Extend für ein umfassendes Debugging von WordPress (PHP-Fehler/Hinweise/Einschränkungen/Warnungen, Datenbankabfragen, Pfade, Konstanten, HTTP-Anfragen, Transienten, Sitzungsvariablen, Var-Dumps) .

Lesen Sie auch Alle Post-Meta und Was speichern Plugins, um spezifische Informationen zu Posts zu erhalten.

0
Caleb

PHPStorm und Xdebug sind für mich ein Spiel, das sich für die Entwicklung von WordPress ändert. Ich kann es jetzt nur wärmstens empfehlen. Speziell mit ihren Inline-Debug-Tools.

0

Ich verwende phpED und xdebug, aber für mich (und anscheinend für jemanden anderen) ist es unmöglich, die Plugins oder die Themendatei zu debuggen! Der Debugger stoppt nur an den Haltepunkten, die sich in den Haupt- oder Original- "Kern" -Dateien befinden! kann mir jemand helfen?

0
Kreker