[Python] trace

Manlio Perillo manlio_perillo a libero.it
Mer 4 Apr 2007 15:00:19 CEST


giuseppe massimo bertani ha scritto:
> Salve a tutti,
> 
> Sto sviluppando una applicazione wxPython suddivisa su diversi files. 
> 
> Debugga oggi debugga domani, mi sono ritrovato i metodi delle classi pieni di "print"
> solo per vedere se tali metodi vengono richiamati e con che ordine.
> 
> Ho visto che esiste un modulo trace, per cui mi immagino sia possibile fare la stessa cosa
> eliminando la maggior parte di questi print. Vorrei pero' limitare il tracciamento alle sole classi e
> funzioni che appartengono al mio applicativo (che hanno un proprio namespace) evitando di tracciare tutte
> le chiamate verso altri moduli, altrimenti non ci capisco piu' niente.
>  

Un pò di codice scritto al volo e non testato a dovere (non avevo mai 
usato trace prima).

Ho usato Twisted perchè vengono chiamate moltissime funzioni.


import sys
from twisted.internet import reactor


localPath = __file__

def trace(frame, event, arg):
     module = frame.f_globals['__name__']
     path = frame.f_globals['__file__']

     if path in localPath:
         code = frame.f_code
         print frame.f_lineno, code.co_name
         print module, path

def foo():
     print 'foo'
     reactor.stop()


sys.settrace(trace)
reactor.callLater(1, foo)
reactor.run()



Saluti  Manlio Perillo


Maggiori informazioni sulla lista Python