Newsgroup: it.comp.www.php
Titolo: sistema di debug

salve,
sto progettando un sistema di debug il mio intento sarebbe
prendere tutto l'output di gestione errori tramite tramite set_error_handler
memorizzarlo in una variabile e mostrarlo in un popup alla fine del tutto
per fare questo ho trovato alcuni problemi
1) nel codice può capitare di usare ob_start ob_end etc siccome queste 
funzioni le volevo
usare per concatenare tutti gli errori della pagina
come potrei risolvere ? ho visto che usandoli innestati in incasina il 
codice nel senso in uscita no ho quello che volevo
la mia idea base era questo
function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
{
  static $cont = "";
  ob_start();
  // timestamp for the error entry
  $dt = date("Y-m-d H:i:s (T)");
  $cont.= ob_get_contents();
  echo $cont;
}
$old_error_handler = set_error_handler("userErrorHandler");
2) per ovviare a questo ho pensato di scrivere tutto dentro un file 
temporaneo ed a fine script
fare in modo che venga chiamata una funzione che me lo mostri (in automatico 
quando il debug è attivo)
domanda : come posso fare per chiamare una in automatica una funzione a fine 
script ? il php lo permette ? e se si verifica un errore
che blocca lo script la chiamata viene fatta ugualmente ?
grazie ciao

 popup alla fine del tutto per fare questo ho trovato alcuni problemi
<?php
define ('DEBUG',     true);
define ('DEBUG_VAR', 'debug');
function user_error_handler($errno, $errmsg, $filename, $linenum,
$vars) {
	$error = array();
	$error['date'] = date("Y-m-d H:i:s (T)");
	$error['msg']  = '...';
	// ...
	$GLOBALS[DEBUG_VAR][] = $error;
}
function user_exception_handler() {
	// ...
}
function show_debug() {
	print('<pre>');
	print_r($GLOBALS[DEBUG_VAR]);
	print('</pre>');
}
if (DEBUG === true) {
	set_error_handler('user_error_handler');
	register_shutdown_function('show_debug');
	// set_exception_handler('user_exception_handler'); // PHP5
}
?>
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 che blocca lo script la chiamata viene fatta ugualmente ?
Non so se può inspirarti, ma io lascerei popup varie ed eventuali sulla  
pagina.
Metterei tutto in session e creerei un'altra pagina che legge la session.  
Così non incasini il markup ed hai una pagina (protetta da password) che  
ti funge da console di debug.
Occhio a pulire la session ogni tanto. :-)
Se vieni a capo di qualcosa magari posta.
Tac
-- 
La netiquette prevede sign di al massimo quattro righe.
Purtroppo la mia sign in quattro righe non ci stà.


interessante consigli ?

Ho fatto proprio così però il mio scopo era avere un file (per adesso) che 
faceva tutto comodo perchè volevo usare questo mini sistema
per progetti già fatti e non volevo aggiungere tanto cose ho pensato un file 
ed un include al limite
in pratica uso una sessione terminato lo scrtipt lancio un js che richiama 
la stessa pagina ma la apre in una nuova finestra
con parametro tipo debug=show
verifica quel parametro e miformatta l'output come lo voglio tutto in un 
unico file.
ciau e grazie

 ciau e grazie
Molto interessante, a suo tempo ho avuto bisogno di uno script del 
genere e per scarsità di tempo rimediai uno pronto e modificato da me 
ad hoc.. però alla fine era un casino ogni volta metterlo nei proprio 
progetto che ho desistito..
per caso distribuisci il tuo, appena fatto, in open source ? :D
così magari ti diamo una mano a migliorarlo ;)

 interessante consigli ?
Non molti, a parte quelli già dati.
Ripeto, preferisco una pagina separata che legge l'output di debug  
lasciando la pagina originale immutata, ma sono sfumature.
Se ti dovesse servire un output piu' formattato di un semplice magari dai  
un occhiata a:
http://www.stefanoforenza.com/projects/xdump/
E' una classe appena abozzata e ha qualche problema (la versione online  
non gestisce bene i reference e ogni tanto và in loop) ma la trovo  
abbastanza utile.



bellina non l'ho vista in dettaglio ma... la vedrò....

 ha scritto nel 
messaggio 
news:2005121115201550073%bsraminattiscaliit@indovinachelocapiscicom...

per adesso  è poco più di un file appena ho qualcosa di concreto metto 
online