#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, inspect
def _traceit(frame, event, arg):
var_locals = {}
for i in frame.f_locals:
if i[0] != "_" and not inspect.ismodule(frame.f_locals[i]):
var_locals[i] = frame.f_locals[i]
var_globals = {}
for i in frame.f_globals:
if i[0] != "_" and not inspect.ismodule(frame.f_globals[i]):
var_globals[i] = frame.f_globals[i]
print >> sys.stderr, "###########################################################################"
print >> sys.stderr, "--- Les variables locales ---"
print >> sys.stderr, var_locals
print >> sys.stderr, "--- Les variables globales ---"
print >> sys.stderr, var_globals
print >> sys.stderr, "--- Ce qui va ĂȘtre fait ---"
if event == "call":
if frame.f_code.co_name == "<module>":
print >> sys.stderr,"On entre dans le fichier :", frame.f_code.co_filename
return _traceit
args = []
lvars = []
for i in frame.f_code.co_varnames:
if i in var_locals:
args.append(i)
else:
lvars.append(i)
print >> sys.stderr, "Appel de", frame.f_code.co_name
print >> sys.stderr, "- Arguments :", args
print >> sys.stderr, "- Variables locales :", lvars
elif event == "return":
if frame.f_code.co_name == "<module>":
print >> sys.stderr,"On sort du fichier"
return _traceit
print >> sys.stderr, "Fin de", frame.f_code.co_name
print >> sys.stderr, "- Valeur de retour :", arg
else:
print >> sys.stderr, "Exécution du code :"
print >> sys.stderr, "- Fichier :", frame.f_code.co_filename
print >> sys.stderr, "- Ligne :", frame.f_lineno
return _traceit
sys.settrace(_traceit)
if len(sys.argv) < 2:
print "Usage :", sys.argv[0], "<python script>"
else:
execfile(sys.argv[1])
syntax highlighted by Code2HTML, v. 0.9.1