2012-03-30 157 views
3

如何獲取堆棧幀傳入traceback.print_stack獲取堆棧幀

Python 3.3a1 docs

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

此功能 版畫從它的調用點的堆棧跟蹤。可以使用可選的f 參數來指定替代堆棧幀以啓動。 可選限制和文件參數的含義與 print_exception()相同。

但是在文檔中沒有找到實際獲得堆棧幀的方法。具體來說,假設我想打印從調用點上一級開始的堆棧跟蹤。我怎樣才能做到這一點?

回答

2

inspect.stack()會將您當前的堆棧作爲列表。你可以選擇任何你想要的框架。你也可以做例如inspect.currentframe().f_back以獲取您的來電者的框架。基本上,inspect模塊就是它所處的位置。

2

This文檔提供了有關可用於獲取堆棧幀的函數的信息,例如inspect.currentframe()

1

除了檢查模塊,你可以嘗試:

import sys 
sys._getframe(1) 

import sys 
sys._getframe().f_back 

被警告這是一個私人的功能,蟒蛇的某些版本可能無法實現它。