Понимание вывода pdb после pdb.set_trace ()

1

Попытка отладить мой python на основе roguelike с pdb. То, что я пытаюсь понять, это функция handle_keys(), возвращающая 0, как я спрашиваю. У меня есть другая функция, которая не ведет себя так, как ожидалось, и поэтому я пытаюсь выяснить, где эта проблема. Что должно произойти: handle_keys() возвращает 0, то frag_grenade() что-то делает.

Я вставил traceback для pdb, но я не уверен, что это покажет мне, если handle_keys() возвращает 0 или нет:

elif key.vk == libtcod.KEY_BACKSPACE:
        game_state = 'playing'
        pdb.set_trace()
        return 0

Когда я нажимаю backspace в игре, я получаю этот вывод из pdb:

→ возврат 0

Я не уверен, показывает ли это возвращаемое значение или просто показывает следующую строку кода....

Большое спасибо!

Теги:
pdb

1 ответ

1

26,2. pdb - Отладчик Python - Документация Python 2.7.15:

Типичное использование для взлома в отладчик из запущенной программы - вставить

import pdb; pdb.set_trace()

в месте, где вы хотите проникнуть в отладчик. Затем вы можете выполнить код, следующий за этим утверждением, и продолжить работу без отладчика с помощью команды c.

Стрелка указывает на текущую строку, которая должна быть выполнена.

Возвращаемое значение печатается совершенно по-другому:

In [11]: def answer():
    ...:     return 42

In [13]: pdb.runeval("answer()")
> <string>(1)<module>()->None
(Pdb) s
--Call--
> <ipython-input-11-22e067ec9c24>(1)answer()
-> def answer():
(Pdb) n
> <ipython-input-11-22e067ec9c24>(2)answer()
-> return 42
(Pdb)
--Return--
> <ipython-input-11-22e067ec9c24>(2)answer()->42
-> return 42
(Pdb)

Как вы можете видеть, возвращаемая строка печатается дважды - сначала перед выполнением, а затем, когда функция возвращается. Во второй раз он сопровождается - --Return-- и возвращаемое значение в строке местоположения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню