【问题标题】:How to debug a function that has been passed as an argument to another function如何调试已作为参数传递给另一个函数的函数
【发布时间】:2022-01-09 13:06:51
【问题描述】:

我是 Python 新手,习惯于在 R 中调试。当 my_function 作为参数传递给另一个函数时,我正在尝试调试它

df.apply(my_function, axis=1)

当我使用调试器时(我在 Spyder V5 中),我可以跳转到应用函数(“down”或“crtl + f11”),但是当它被调用时我似乎无法导航到 my_function从作为参数传递。

在 R 中,我会将 browser() 添加到 my_function 并从那里开始,但是当我尝试添加 ipdb.set_trace()(我认为它是等效的)时,我的控制台挂起,没有任何提供输入的选项。

我需要在这种情况下检查它,因为它在作为 arg 传递给特定函数时会中断,但不会在其他函数中中断(它实际上在示例函数“pd.apply”中工作)。

【问题讨论】:

  • Spyder 还可以让用户设置断点。或者考虑使用VSCode+调试模式。
  • 我遇到了断点被忽略的问题,但我意识到它们仅在调试(“ctrl + f5”)运行时中断,而不是在正常运行时中断。这让我很困惑,因为在 R 中,当我想用​​“browser()”中断时,我只是正常运行该函数。如果我知道一种从脚本中间的特定点开始调试的方法,而不是从顶部开始。如果你做一个,我会接受你的回答。谢谢!

标签: python ipdb


【解决方案1】:

您可以通过双击行号在 Spyder 中添加断点。然后您可以使用 Debug 选项或Ctrl+F5 运行代码。

  • 要移动到下一个断点:继续或Ctrl+F12。
  • 移动到下一行:Step 或Ctrl+F10
  • 要沿着函数执行移动: Step Into 或Ctrl+F11

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2019-10-09
    • 2017-08-07
    • 2019-08-19
    • 1970-01-01
    • 2023-01-12
    相关资源
    最近更新 更多