【问题标题】:pdb step into a function when already in pdb modepdb 在 pdb 模式下进入函数
【发布时间】: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 问题和答案 + 查阅了文档,但仍然没有找到任何解决这种特殊情况的内容。

【问题讨论】:

标签: python pdb


【解决方案1】:

您可能正在寻找s 命令:它s-进入下一个函数。

在调试模式下,您可以使用h(帮助)查看所有可用命令。另见the docs

【讨论】:

  • 哇,好用!猜猜那是我在查看文档方面做得不够好。干杯!
  • 猜猜它有时会发生在每个人身上:p
  • pdb 中内置的帮助信息有点令人困惑。 Python document site 说“...(在被调用的函数中或 在当前函数的下一行)”,而 pdb 帮助信息说“在被调用的函数中或在当前函数中”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2015-04-30
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
相关资源
最近更新 更多