pdb перейти в функцию, когда уже в режиме pdb - PullRequest
2 голосов
/ 08 октября 2019

В режиме pdb я часто хочу войти в функцию. Вот ситуация, которая иллюстрирует, что я мог бы сделать. Учитывая код:

def f(x):
    print('doing important stuff..')
    result = g(x) + 2
    return result

def g(x):
    print('some cool stuff going on here, as well')
    0 / 0  # oops! a bug
    return x + 5

Теперь предположим, что я установил точку останова между print('doing cool stuff') и result = g(x) + 2. Итак, теперь f(x) выглядит так:

def f(x):
    print('doing important stuff..')
    __import__('pdb').set_trace()  # or something similar..
    result = g(x) + 2
    return result

И затем я вызываю функцию f(x) с x=5, ожидая получить результат 12. Когда меня вызывают, я оказываюсь в интерактивном сеансе pdb во второй строке f. Нажатие n выдаст мне ошибку (в данном случае ZeroDivisionError). Теперь я хочу в интерактивном режиме перейти к функции g(x), чтобы увидеть, в чем может быть ошибка. Можно ли как-то сделать это, не «перемещая» точку останова в g(x) и перезапуская все? Я просто хочу ввести функцию g в первой строке, еще находясь в режиме pdb.

Я искал предыдущие вопросы и ответы SO +, просмотрел документацию и до сих пор не нашел ничего, чтообращается к этой конкретной ситуации.

1 Ответ

2 голосов
/ 08 октября 2019

Вы, вероятно, ищете команду s: она s -подходит в следующую функцию.

В режиме отладки вы можете просмотреть все доступные команды, используя h (справка),Смотри также документы .

...