【问题标题】:Log call stack in Python在 Python 中记录调用堆栈
【发布时间】:2015-05-29 06:04:33
【问题描述】:

我正在调试不是我编写的大型网络应用程序。这就是为什么我需要一种方法来打印某处的每个堆栈调用(标准输出或文件)。

This 讨论对我没有帮助。我在考虑 pdb 但在我寻找自动化解决方案时它需要交互。在我的应用程序开始执行时,我只有一个函数调用,并且希望查看它进行的所有其他调用。

该行为应该有点类似于 Unix tee 命令。 Python 解释器应该执行代码,同时它应该记录来自不同模块的所有函数调用。

有什么建议吗?

已编辑:

#!/usr/bin/env python
import openerp
if __name__ == "__main__":
    openerp.cli.main()

所以从这一点开始,我想记录 main() 所做的所有函数调用。

【问题讨论】:

  • 所有答案都没有帮助吗? stackoverflow.com/a/16200714/3001761呢?
  • print inspect.stack() 在我的情况下没有提供任何信息,因为我在程序的入口点导入了函数调用。所以,回答你的问题,他们不是。
  • 您能否提供一个minimal example 您正在运行并想要记录的代码?它可能会帮助其他人找到合适的解决方案。

标签: python-2.7 stack-trace introspection pdb


【解决方案1】:

如果您使用 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 调用每个函数。

更多信息:https://docs.python.org/2/library/trace.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 2012-11-12
    • 1970-01-01
    • 2011-04-06
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多