如何打印脚本的每一行,因为它只运行正在运行的顶级脚本?

kef*_*ich 16 python trace

python的跟踪模块将允许您运行脚本打印每行代码,因为它在脚本和所有导入的模块中运行,如下所示:

 python -m trace -trace myscript.py
Run Code Online (Sandbox Code Playgroud)

有没有办法做同样的事情,但打印顶级调用,即只打印行中的行myscript.py

我正在尝试调试中止陷阱失败,我无法弄清楚它在哪里死亡.不幸的是,使用完整--trace需要永远 - 脚本通常需要2-3分钟才能运行,完整的跟踪已经持续数小时.

小智 10

我偶然发现了这个问题,发现grep是一个快速而肮脏的解决方案:

python -m trace --trace my_script.py | grep my_script.py
Run Code Online (Sandbox Code Playgroud)

我的脚本在有限的时间内运行.这可能不适用于更复杂的脚本.


Ric*_*ard 0

这不完全是你想要的,但你可以考虑使用 py.test 和“-s”,这将阻止 py.test 捕获打印语句的输出......所以你可以为每个函数在这里和那里放置一些打印语句您在脚本中创建了一个虚拟测试,该测试仅像往常一样执行您的脚本...然后您可能会看到它失败的地方。