403 votes

Comment déboguer les scripts PHP ?

Comment déboguer votre PHP des scripts ?

Je suis conscient du débogage de base, comme l'utilisation du rapport d'erreurs. Le débogage par points d'arrêt dans PHPEclipse est également très utile.

Existe-t-il d'autres bonnes/meilleures techniques ?

145voto

John Downey Points 6729

Je suis cet article pour mettre en place un environnement Eclipse avec des fonctions de débogage comme celles que vous avez mentionnées. La possibilité d'entrer dans le code est un bien meilleur moyen de déboguer que l'ancienne méthode consistant à vidanger et à imprimer à différents endroits pour voir où le flux se trompe. Lorsque tout le reste échoue et que tout ce que j'ai est SSH et vim, je continue à var_dump() / die() pour trouver où le code va mal.

80voto

Pat Points 18943

Vous pouvez utiliser Firephp une extension de firebug pour déboguer php dans le même environnement que javascript.

J'utilise également Xdebug mentionné précédemment pour le profilage de php.

38voto

eisberg Points 1632

C'est mon petit environnement de débogage :

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 Points 3015

Xdebug et le plugin DBGp pour Notepad++ pour les gros travaux de recherche de bogues, FirePHP pour les travaux légers. Rapide et sale ? Rien ne vaut dBug .

26voto

Julio César Points 3007

XDebug est essentiel pour le développement. Je l'installe avant toute autre extension. Elle vous donne des traces de pile pour toute erreur et vous pouvez activer le profilage facilement.

Pour un aperçu rapide d'une structure de données, utilisez var_dump() . N'utilisez pas print_r() car vous devrez l'entourer de <pre> et il n'imprime qu'une seule var à la fois.

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

Pour un véritable environnement de débogage, le meilleur que j'ai trouvé est le suivant IDE Komodo mais cela coûte $$$.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X