homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author nedbat
Recipients nedbat
Date 2011年05月04日.01:58:52
SpamBayes Score 1.4631629e-12
Marked as misclassified No
Message-id <1304474333.76.0.969797512596.issue11992@psf.upfronthosting.co.za>
In-reply-to
Content
The docs say:
 The trace function is invoked (with event set to 'call') whenever a new local scope is entered; it should return a reference to a local trace function to be used that scope, or None if the scope shouldn’t be traced.
 The local trace function should return a reference to itself (or to another function for further tracing in that scope), or None to turn off tracing in that scope.
It's that last part that's wrong: returning None from the trace function only has an effect on the first call in a new frame. Once the trace function returns a function for a frame, returning None from subsequent calls is ignored. A "local trace function" can't turn off tracing in its scope.
To demonstrate:
 import sys
 UPTO_LINE = 1
 def t(frame, event, arg):
 num = frame.f_lineno
 print("line %d" % num)
 if num < UPTO_LINE:
 return t
 def try_it():
 print("twelve")
 print("thirteen")
 print("fourteen")
 print("fifteen")
 UPTO_LINE = 1
 sys.settrace(t)
 try_it()
 UPTO_LINE = 13
 sys.settrace(t)
 try_it()
Produces:
 line 11
 twelve
 thirteen
 fourteen
 fifteen
 line 11
 line 12
 twelve
 line 13
 thirteen
 line 14
 fourteen
 line 15
 fifteen
 line 15
The first call to try_it() returns None immediately, preventing tracing for the rest of the function. The second call returns None at line 13, but the rest of the function is traced anyway. This behavior is the same in all versions from 2.3 to 3.2, in fact, the 100 lines of code in sysmodule.c responsible for Python tracing functions are completely unchanged through those versions.
History
Date User Action Args
2011年05月04日 01:58:53nedbatsetrecipients: + nedbat
2011年05月04日 01:58:53nedbatsetmessageid: <1304474333.76.0.969797512596.issue11992@psf.upfronthosting.co.za>
2011年05月04日 01:58:53nedbatlinkissue11992 messages
2011年05月04日 01:58:52nedbatcreate

AltStyle によって変換されたページ (->オリジナル) /