获得堆栈框架

时间:2012-03-30 06:18:43

标签: python python-3.x stack-trace

如何将堆栈帧传递到traceback.print_stack

来自Python 3.3a1 docs

  

traceback.print_stack(f=None, limit=None, file=None)

     

此功能   从其调用点打印堆栈跟踪。可选f   参数可用于指定要启动的备用堆栈框架。该   可选的limit和file参数具有相同的含义   print_exception()

但是在文档中没有找到实际获得堆栈帧的方法。具体来说,我想说我想在调用点上方一层开始打印堆栈跟踪。我怎么能这样做?

3 个答案:

答案 0 :(得分:4)

inspect.stack()会将当前堆栈作为列表。您可以选择任何想要的帧。你也可以做,例如inspect.currentframe().f_back获取来电者的相框。基本上,inspect模块就在它的位置。

答案 1 :(得分:2)

This文档提供了有关可用于获取堆栈帧的函数的信息,例如inspect.currentframe()

答案 2 :(得分:1)

除了检查模块,您可以尝试:

import sys
sys._getframe(1)

import sys
sys._getframe().f_back

警告它是私有函数,某些版本的python可能无法实现它。