2013/3/20 anatoly techtonik <[email protected]> > Hi, > > I've created a module to dump function trace during execution of Python > script. You can see session example in attachment. The format is of PHP > Xdebug tool [2] just because I had some scripts from the past to analyze it. > > The module uses sys.settrace() to analyse frames in 'call' events with > callback(frame, event, arg). > > Recently I've got an anonymous report that some frame misses filename > information when run under IDE: > > https://bitbucket.org/techtonik/xtrace/issue/2/use-of-xtrace-module-within-ide-causes > > There is unlikely to be any more feedback from the user to make me > understand and reproduce the behavior, nor there is a sufficient > documentation in sys.trace description [1]. So I am on my own. But I can > not read C code the CPython is written in, so I ask here. > > What are possible execution contexts for Python? > How each execution context affects data structure that is passed to trace > function (frame and arg)? >
It's simpler than that: when running from an interactive session, f_back is empty... >>> def trace(frame, event, arg): ... funcname = frame.f_code.co_name ... if funcname == '<module>': ... print frame.f_back.f_code.co_filename ... >>> import sys >>> sys.settrace(trace) >>> 1 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in trace AttributeError: 'NoneType' object has no attribute 'f_code' -- Amaury Forgeot d'Arc
_______________________________________________ pypy-dev mailing list [email protected] http://mail.python.org/mailman/listinfo/pypy-dev
