Améliorer les traces de Xdebug

Xdebug est un outil de debug PHP très utile et très efficace. Les traces qu'il affiche sont cependant parfois succintes et assez frustrantes pour qui à l'habitude de recevoir une palanquée de messages en java. Voici comment les améliorer.

Il existe de nombreuses options de configuration (à placer dans le fichier /etc/php.d/xdebug.ini) qui permettent de personnaliser les messages de Xdebug. Ce qui m'intéresse ici c'est de connaître la trace précise d'exécution de mon programme lorsqu'une exception survient car, par défaut, Xdebug ne m'affiche que les 2 ou 3 premières actions et la ligne de plantage. On pourrait activer l'option xdebug.show_exception_trace mais celle-ci affiche la trace de toutes les exceptions, y-compris celles que vous capturez. Pour avoir quelque chose de plus propre, il est donc préférable de na pas définir l'option dans le fichier de configuration mais de l'activer en fonction des besoins avec la fonction ini_set. Voilà par exemple comment je l'utilise dans une méthode qui transforme les erreurs en exceptions :

public static function errorHandler($errno, $errstr = '', $errfile = '', $errline = '')
{
    if (error_reporting() & $errno) {
        ini_set('xdebug.show_exception_trace', 1);
        throw new \ErrorException($errstr, $errno, 0, $errfile, $errline);
        ini_set('xdebug.show_exception_trace', 0);
    }
    return true;
}
Activer la trace détailler des exceptions dans Xdebug.

Il y a sans doute une meilleure manière de faire.