获取堆栈帧

问题描述:

如何获取堆栈帧传入traceback.print_stack获取堆栈帧

Python 3.3a1 docs

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

此功能 版画从它的调用点的堆栈跟踪。可以使用可选的f 参数来指定替代堆栈帧以启动。 可选限制和文件参数的含义与 print_exception()相同。

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

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

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

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

import sys 
sys._getframe(1) 

import sys 
sys._getframe().f_back 

被警告这是一个私人的功能,蟒蛇的某些版本可能无法实现它。