【发布时间】:2019-10-08 08:46:01
【问题描述】:
在 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 important 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
然后我用x=5 调用函数f(x),期望得到12 的结果。当被调用时,我在f 的第二行结束了一个交互式 pdb 会话。点击n 会给我错误(在这种情况下是 ZeroDivisionError)。现在,我想以交互方式进入g(x) 函数以查看错误可能是什么。在不“移动”g(x) 中的断点并重新运行所有内容的情况下,是否有可能做到这一点?我只想在第一行输入函数g,同时仍处于pdb模式。
我已经搜索了以前的 SO 问题和答案 + 查阅了文档,但仍然没有找到任何解决这种特殊情况的内容。
【问题讨论】: