Получить полную обратную трассировку с pdb.post_mortem - PullRequest
0 голосов
/ 01 ноября 2019

Мне нравится функциональность 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()), даже если это потребует некоторых особых усилий. Смотрите эти сообщения:

Но можно ли сделать эту информацию доступной в отладчике? Я пробовал много перестановок, пытаясь добиться этого, но пока безуспешно.

Если нет, то почему? Я действительно не понимаю, в чем здесь проблема. Это похоже на прямую просьбу, но я должен что-то упустить.

...