В режиме 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 +, просмотрел документацию и до сих пор не нашел ничего, чтообращается к этой конкретной ситуации.