Мне нравится функциональность pdb.post_mortem()
, доступная в Python3. Однако я заметил, что доступная обратная трассировка в созданном сеансе отладчика ... недостаточна.
Небольшой пример:
import pdb
def inner():
raise Exception("bad stuff")
def outer():
try:
inner()
except Exception as ex:
pdb.post_mortem()
def main():
outer()
main()
Когда я запускаю это, меня помещают в отладчик. Затем, если я запускаю команду bt
, чтобы получить обратную трассировку, я вижу:
(Pdb) bt
/path/to/script(10)outer()
-> inner()
> /path/to/script(6)inner()
-> raise Exception("bad stuff")
Как видите, обратная трассировка имеет только outer()
и inner()
. Что случилось с main()
? Мне нужен полный стек, чтобы я мог исследовать переменные и т. Д. В любой точке цепочки.
Могу ли я получить то, что хочу? Если да, то как?
Примечание. Мне известно, что я могу напечатать полную трассировку стека (включая main()
), даже если это потребует некоторых особых усилий. Смотрите эти сообщения:
Но можно ли сделать эту информацию доступной в отладчике? Я пробовал много перестановок, пытаясь добиться этого, но пока безуспешно.
Если нет, то почему? Я действительно не понимаю, в чем здесь проблема. Это похоже на прямую просьбу, но я должен что-то упустить.