是否可以在使用sys.settrace本身的代码中设置断点?例如,指令跟踪程序或扩展Pdb或Bdb的类
示例代码trace.py:
import sys
def tracefunc(frame, event, arg):
print(event) #break here?
return tracefunc
if __name__ == '__main__':
if len(sys.argv) < 2:
print __doc__
exit()
else:
file_name = sys.argv[1]
sys.settrace(tracefunc)
globals = {}
locals = {}
try:
execfile(file_name, globals, locals)
finally:
sys.settrace(None)
要跟踪的简单文件:loop.py
a = 100
b = 1000
for i in range(3):
a = a + b
b = b + 1
运行python trace.py loop.py
的控制台输出call
line
line
line
line
line
line
line
line
line
line
line
line
return
运行:
python -m pdb trace.py loop.py
b 4 #sets a breakpoint on line 4 ie the print(event) line
s # step through the program line by line
pdb永远不会在第4行停止,但是控制台输出显示它是在第18行execfile之后执行的(...