예제 #1
0
파일: tracer.py 프로젝트: goulu/pythoscope
    def __init__(self, callback):
        self.callback = callback

        self.btracer = BytecodeTracer()

        self.top_level_function = None
        self.sys_modules = None
예제 #2
0
import dis
import inspect
import sys

from bytecode_tracer import BytecodeTracer
from bytecode_tracer import rewrite_function

btracer = BytecodeTracer()


def trace(frame, event, arg):
    bytecode_events = list(btracer.trace(frame, event))
    if bytecode_events:
        for ev, rest in bytecode_events:
            if ev == 'c_call':
                func, pargs, kargs = rest
                print "C_CALL", func.__name__, repr(pargs), repr(kargs)
            elif ev == 'c_return':
                print "C_RETURN", repr(rest)
            elif ev == 'print':
                print "PRINT", repr(rest)
            elif ev == 'print_to':
                value, output = rest
                print "PRINT_TO", repr(value), repr(output)
    else:
        if event == 'call':
            args = inspect.getargvalues(frame)
            try:
                args = str(args)
            except Exception:
                args = "<unknown>"
예제 #3
0
 def setup(self):
     self._traces = []
     self._ignored_events = ['load_global', 'store_global']
     self.btracer = BytecodeTracer()
예제 #4
0
 def setup(self):
     self._traces = []
     self.btracer = BytecodeTracer()