Example #1
0
def print_trace_table(request):
    def temp():
        exec(request["code"])

    tracker = Tracker(**request["parameters"])
    targets = request["variables"]

    def tracer(frame, event, arg=None):
        code = frame.f_code
        line_no = frame.f_lineno
        #tracker.onchange("_line_number", line_no)
        for v in targets:
            if len(tracker.values.get(v, {}).keys()) > 0:
                if tracker.values[v][max(
                        tracker.values[v].keys())] == frame.f_locals.get(v):
                    continue
            if v in frame.f_locals.keys():
                tracker.onchange(v, frame.f_locals.get(v))
        return tracer

    sys.settrace(tracer)

    temp()

    sys.settrace(None)

    print(tracker.displayTraceTable())
Example #2
0
from tracker import Tracker, VarContainer

tracker = Tracker(compact=True)
t = VarContainer(tracker.onchange)


# begin problem
def TotalOut(a, b):
    t.a, t.b = a, b  # must use variables in the varContainer
    t.c = t.a + t.b

    while t.a < t.c:
        t.a = t.a + 1
        t.b = t.b - t.a

    return t.b


TotalOut(3, 4)

# end problem
print(tracker.displayTraceTable())