2011-02-08 2 views
2

В Python есть ли способ увидеть текущий стек стека? То есть, я хочу увидеть список файлов, которые были вызваны, чтобы добраться до моего текущего местоположения.См. Текущий кадр без ошибки

По существу, я хочу видеть

try: 
    1/0 
except: 
    traceback.print_exc() 

фактически не поднимая ошибку.

ответ

0

Вы можете использовать pdb и добавить точку останова.

import pdb; pdb.set_trace() 

Затем пользователь по где команда, чтобы сказать вам, где вы находитесь в кадре стека.

2

Вы хотите трассировку стека, а не стек стека (фрейм стека является одной областью в стеке, например, локальными переменными текущей функции). Модуль traceback имеет различные средства для получения трассировки стека без привлечения исключения. Чтобы напрямую распечатать трассировку стека, используйте traceback.print_stack().

+0

Хорошо, спасибо. traceback.print_tb берет объект трассировки справа? Есть ли функция в traceback, которая получит текущую трассировку? Кроме того, только для моего уточнения, я думал, что трассировка была только стеком в момент, когда произошла ошибка, не так ли? Будет работать traceback.print_stack()? – Colin

+0

@Colin: Вы правы, вы действительно хотите 'print_stack()' (который * является * трассировкой стека) - я просто глуп и запутался в нем :) Исправлено. – delnan

Смежные вопросы