Manlio Perillo ha scritto:
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__']


Al posto di usare __file__, puoi usare:
code.co_filename

Se il modulo appartiene alla libreria standard non viene mostrato il path assoluto ma solo il nome del file (non mi sembra sia una cosa documentata, comunque).

Infine, __file__ non dovrebbe essere definito per moduli linkati staticamente all'interprete (ma su piattaforme usuali non credo sia mai il caso).




Saluti  Manlio Perillo
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a