IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

debug_backtrace et casse-tête [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Points : 9
    Points
    9
    Par défaut debug_backtrace et casse-tête
    J'aimerais ajouter un outils de débug dans un MVC perso avec la fonction debug_backtrace().

    Le but est donc d'appeler debug_backtrace() au niveau des actions, mais comment faire pour que l'appel se fasse sans modifier chaque méthode?

    Ou alors existe-il un autre moyen pour obtenir un backtrace, après exécution de la fonction ?

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    si tu lances des exceptions en cas d'erreurs la pile exécution est récupérable

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Points : 89
    Points
    89
    Par défaut
    NetBeans avec le module php permet de debugger pas à pas,une fois xdebug ou zend debugger installé.

    Du coup il devient possible de suivre l'état de la pile d'appel, du contexte, etc. comme avec un débugger java ou .net, à cela près qu'il est fréquent qu'il plante si un espion est placé sur une variable et que le contexte ne soit plus celui de la variable.

    xdebug permet de faire du profilage de code aussi, il est possible que ça réponde à ton besoin.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    L'usage de debug_backtrace est très utile en dev ou en débug. Mais il faut impérativement l'appeler là ou c'est nécessaire. Si tu fais un MVC, tu es probablement en train de faire de l'objet et dans ce cas, tu n'en a pas besoin car les exception contiennent les informations nécéssaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    try { throw new RuntimeException('test'); }
    catch (Exception $e) { var_dump($e); }
    La trace est dans l'exception

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Merci de vos réponses! Je pense que je m'y prenais mal : je cherchais a obtenir une trace au niveau de mon FrontController. Donc je pense que pour obtenir ce que je voulais, j'aurais du utiliser un profiler (du genre celui de xdebug).

    Mais comme je suis dans un MVC, le niveau le plus profond d'appel et bien c'est ma vue ! Et ce qui est commun à toutes les vues : le template

    Donc je n'ai plus qu'a créer une version "spéciale débug" de mon template où j'y appelle debug_backtrace() !

    Je suis pas loin de faire couler Zend et Symfony avec mon NicoFramework

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Si ça peut t'aider, voici comment faire un mécanisme de log simplissime en PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
     
    if (!file_exists('run.log'))
    	touch('run.log');
     
    error_reporting(E_USER_ERROR | E_USER_NOTICE);
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
    ini_set('ignore_repeated_errors', 0);
    ini_set('error_prepend_string', 'MyLog: ');
    ini_set('error_log', 'run.log');
     
    trigger_error('test');
     
    header('Content-Type: text/plain');
    echo file_get_contents('run.log');
    On peut bien évidement étendre ce mécanisme pour avoir du dispatching avec des adapteurs, mettre des wrappeurs pour gérer plusieurs cas d'erreur , prendre en charge les exceptione etc. Personnellement, je log toutes les erreurs dans un log à moi, c'est plus pratique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Casse têtes de boucles
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 28/06/2006, 01h24
  2. Casse tête chinois
    Par Jahjouh dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 15/03/2006, 10h04
  3. requête SQL un peu casse tête
    Par hellbilly dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/12/2005, 11h03
  4. Classe, pile, pointeurs et casse-tête!
    Par zazaraignée dans le forum Langage
    Réponses: 6
    Dernier message: 26/09/2005, 17h57
  5. casse-tête excel
    Par gregius dans le forum Access
    Réponses: 2
    Dernier message: 21/09/2005, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo