402 Stimmen

Wie kann man PHP-Skripte debuggen?

Wie debuggen Sie PHP Drehbücher?

Ich bin mit der grundlegenden Fehlersuche vertraut, z. B. mit der Fehlerberichterstattung. Die Haltepunkt-Fehlersuche in PHPEclipse ist ebenfalls sehr nützlich.

Was ist die am besten (im Sinne von schnell und einfach) in phpStorm oder einer anderen IDE zu debuggen?

145voto

John Downey Punkte 13394

Versuchen Sie Sonnenfinsternis PDT um eine Eclipse-Umgebung einzurichten, die über die von Ihnen erwähnten Debugging-Funktionen verfügt. Die Möglichkeit, in den Code einzugreifen, ist ein viel besserer Weg zum Debuggen als die alte Methode von var_dump und print an verschiedenen Stellen, um zu sehen, wo Ihr Fluss schief läuft. Wenn alles andere fehlschlägt und ich nur SSH und vim habe, kann ich immer noch var_dump() / die() um herauszufinden, wo der Code schief läuft.

80voto

Pat Punkte 35602

Sie können Firephp, ein Add-on zu Firebug, zum Debuggen von php in der gleichen Umgebung wie javascript verwenden.

Ich verwende auch Xdebug für die Profilierung von php.

38voto

eisberg Punkte 3501

Dies ist meine kleine Debug-Umgebung:

error_reporting(-1);
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_BAIL, 0);
assert_options(ASSERT_QUIET_EVAL, 0);
assert_options(ASSERT_CALLBACK, 'assert_callcack');
set_error_handler('error_handler');
set_exception_handler('exception_handler');
register_shutdown_function('shutdown_handler');

function assert_callcack($file, $line, $message) {
    throw new Customizable_Exception($message, null, $file, $line);
}

function error_handler($errno, $error, $file, $line, $vars) {
    if ($errno === 0 || ($errno & error_reporting()) === 0) {
        return;
    }

    throw new Customizable_Exception($error, $errno, $file, $line);
}

function exception_handler(Exception $e) {
    // Do what ever!
    echo '<pre>', print_r($e, true), '</pre>';
    exit;
}

function shutdown_handler() {
    try {
        if (null !== $error = error_get_last()) {
            throw new Customizable_Exception($error['message'], $error['type'], $error['file'], $error['line']);
        }
    } catch (Exception $e) {
        exception_handler($e);
    }
}

class Customizable_Exception extends Exception {
    public function __construct($message = null, $code = null, $file = null, $line = null) {
        if ($code === null) {
            parent::__construct($message);
        } else {
            parent::__construct($message, $code);
        }
        if ($file !== null) {
            $this->file = $file;
        }
        if ($line !== null) {
            $this->line = $line;
        }
    }
}

32voto

djn Punkte 3954

Xdebug und das DBGp-Plugin für Notepad++ für die schwere Fehlersuche, FirePHP für leichte Aufgaben. Schnell und schmutzig? Nichts geht über dBug .

26voto

Julio César Punkte 11682

XDebug ist für die Entwicklung unerlässlich. Ich installiere sie vor allen anderen Erweiterungen. Es gibt Ihnen Stack Traces auf jeden Fehler und Sie können Profiling leicht aktivieren.

Für einen schnellen Blick auf eine Datenstruktur verwenden Sie var_dump() . Verwenden Sie nicht print_r() denn Sie müssen sie umgeben mit <pre> und es wird jeweils nur eine Variable gedruckt.

<?php var_dump(__FILE__, __LINE__, $_REQUEST); ?>

Für eine echte Debugging-Umgebung ist die beste Lösung, die ich gefunden habe Komodo-IDE aber es kostet $$.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X