在 Python 中记录调用堆栈
Log call stack in Python
我正在调试不是我编写的大型网络应用程序。这就是为什么我需要一种方法来在某处(标准输出或文件)打印每个堆栈调用。
This 讨论对我没有帮助。我在考虑 pdb,但在寻找自动化解决方案时它需要交互。在我的应用程序开始执行时,我只有一个函数调用,并且想查看它进行的所有其他调用。
行为应该有点类似于 Unix tee 命令。 Python 解释器应该执行代码,同时它应该记录来自不同模块的所有函数调用。
有什么建议吗?
已编辑:
#!/usr/bin/env python
import openerp
if __name__ == "__main__":
openerp.cli.main()
所以从这一点开始,我想记录 main() 执行的所有函数调用。
如果您使用 python 跟踪模块,您可以调试该解释器执行的每个函数或行。
无需修改程序即可从cli调用trace模块:
#print each executed line:
python -m trace --count -C . -t MypyFile.py
#print only called functions:
python -m trace --listfuncs MypyFile.py
使用 -t 跟踪每行,使用 -l 调用每个函数。
我正在调试不是我编写的大型网络应用程序。这就是为什么我需要一种方法来在某处(标准输出或文件)打印每个堆栈调用。
This 讨论对我没有帮助。我在考虑 pdb,但在寻找自动化解决方案时它需要交互。在我的应用程序开始执行时,我只有一个函数调用,并且想查看它进行的所有其他调用。
行为应该有点类似于 Unix tee 命令。 Python 解释器应该执行代码,同时它应该记录来自不同模块的所有函数调用。
有什么建议吗?
已编辑:
#!/usr/bin/env python
import openerp
if __name__ == "__main__":
openerp.cli.main()
所以从这一点开始,我想记录 main() 执行的所有函数调用。
如果您使用 python 跟踪模块,您可以调试该解释器执行的每个函数或行。
无需修改程序即可从cli调用trace模块:
#print each executed line:
python -m trace --count -C . -t MypyFile.py
#print only called functions:
python -m trace --listfuncs MypyFile.py
使用 -t 跟踪每行,使用 -l 调用每个函数。