mirror of https://github.com/python/cpython
disable the garbage collector while collecting traces, so that __del__s don't get caught
This commit is contained in:
parent
fc49f2a973
commit
cb17094dcd
|
@ -1,3 +1,4 @@
|
|||
import gc
|
||||
import pprint
|
||||
import sys
|
||||
import unittest
|
||||
|
@ -354,9 +355,17 @@ protect_ident = ident(protect)
|
|||
def capture_events(callable, p=None):
|
||||
if p is None:
|
||||
p = HookWatcher()
|
||||
sys.setprofile(p.callback)
|
||||
protect(callable, p)
|
||||
sys.setprofile(None)
|
||||
# Disable the garbage collector. This prevents __del__s from showing up in
|
||||
# traces.
|
||||
old_gc = gc.isenabled()
|
||||
gc.disable()
|
||||
try:
|
||||
sys.setprofile(p.callback)
|
||||
protect(callable, p)
|
||||
sys.setprofile(None)
|
||||
finally:
|
||||
if old_gc:
|
||||
gc.enable()
|
||||
return p.get_events()[1:-1]
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue