Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 13h19   #1
Invité régulier
 
Inscription : mai 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 7
Points : 6
Points : 6
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 ?
euphocat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 14h10   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
si tu lances des exceptions en cas d'erreurs la pile exécution est récupérable
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 15h03   #3
Membre du Club
 
Inscription : mai 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 45
Points : 67
Points : 67
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.
nonolagalinette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 16h45   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
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 :
1
2
3
 
try { throw new RuntimeException('test'); }
catch (Exception $e) { var_dump($e); }
La trace est dans l'exception
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/05/2011, 17h32   #5
Invité régulier
 
Inscription : mai 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 7
Points : 6
Points : 6
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
euphocat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 18h05   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Si ça peut t'aider, voici comment faire un mécanisme de log simplissime en PHP:
Code :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h57.


 
 
 
 
Partenaires

Hébergement Web