【问题标题】:ipdb debugger, step out of cycleipdb 调试器,跳出循环
【发布时间】:2015-09-20 16:56:20
【问题描述】:

在 ipdb 上进行调试时,是否有一个命令可以退出循环(例如,for 或 while),而不必使用断点?

我使用until 命令跳出列表推导,但不知道如何在可能的情况下对整个循环块做类似的事情。

【问题讨论】:

    标签: python debugging ipdb


    【解决方案1】:

    我相信这是until 命令的意图。就像next 一样,只是当跳转到循环的前一个行号时,它将继续直到退出循环。

    unt(il)
    Continue execution until the line with a number greater than the current
    one is reached or until the current frame returns
    

    一般来说,要“跳出”当前函数,请使用return

    r(eturn)
    Continue execution until the current function returns.
    

    【讨论】:

    • 不,例如,直到退出列表理解。它继续执行直到将不同的行号重新作为当前行号,就是这样。如果在某个代码块中(对于其他任何东西),就我所研究的而言,除了断点之外别无他法
    • @Javier Navoa 你为until 描述的是next 的行为。我相信他是对的:until 就像next 一样,只是它总是下降。这样until 可以有效地用于跳出循环,但可能需要多次(循环中剩余的行数)。
    • 陷阱是调试器将列表理解理解为几行,但nextuntil 是一样的。
    【解决方案2】:

    您可以使用j <line number> (jump) 转到另一行。 例如,j 28 转到第 28 行。

    【讨论】:

    • jimifiti指出,jump跳过了跳行,所以和until不相似
    【解决方案3】:

    这听起来很明显:跳跃让你跳跃。 这意味着您不会执行您跳转的行:您应该使用它来跳过您不想运行的代码。

    你可能需要tbreak(临时断点,第一次命中时自动删除。参数与break相同),就像我找到这个页面时所做的那样。

    【讨论】:

      【解决方案4】:

      如果你愿意使用另一个调试器,trepan,有更多的方式可以单步执行。它更像 gdb。所以你可以计算你想踩多少次。或者您可以在continue 调试器命令中提供行号,该命令实质上在该行设置一个临时断点,然后发出“继续”。其他改变步进的东西是"set different"。另请参阅您可以在 step 上添加的偶数后缀。

      请注意,与 ipdb 一样,源文本也有语法高亮显示。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 1970-01-01
        • 2021-05-01
        • 2021-08-31
        • 2012-01-16
        • 2020-05-21
        相关资源
        最近更新 更多