我正在调试不是我写的巨大的web应用程序。这就是为什么我需要一种方法来打印每个堆栈调用(stdout或文件)。
这个讨论对我没有帮助。我在考虑pdb,但在寻找自动化解决方案时,它需要交互。在我的应用程序开始执行时,我只有一个函数调用,并且希望看到它进行的所有其他调用。
行为应该与Unixtee命令有些相似。Python解释器应该执行代码,同时记录来自不同模块的所有函数调用。
有什么建议吗?
编辑:
#!/usr/bin/env python
import openerp
if __name__ == "__main__":
openerp.cli.main()
因此,从这一点开始,我想记录main()所做的所有函数调用。
如果使用python跟踪模块,则可以调试解释器执行的每个函数或行。
可以在不修改程序的情况下从cli调用跟踪模块:
#print each executed line:
python -m trace --count -C . -t MypyFile.py
#print only called functions:
python -m trace --listfuncs MypyFile.py
用-t跟踪每一行,用-l调用每一个函数。
更多信息:https://docs.python.org/2/library/trace.html