【发布时间】:2015-09-20 16:56:20
【问题描述】:
在 ipdb 上进行调试时,是否有一个命令可以退出循环(例如,for 或 while),而不必使用断点?
我使用until 命令跳出列表推导,但不知道如何在可能的情况下对整个循环块做类似的事情。
【问题讨论】:
在 ipdb 上进行调试时,是否有一个命令可以退出循环(例如,for 或 while),而不必使用断点?
我使用until 命令跳出列表推导,但不知道如何在可能的情况下对整个循环块做类似的事情。
【问题讨论】:
我相信这是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.
【讨论】:
until 描述的是next 的行为。我相信他是对的:until 就像next 一样,只是它总是下降。这样until 可以有效地用于跳出循环,但可能需要多次(循环中剩余的行数)。
next 和until 是一样的。
您可以使用j <line number> (jump) 转到另一行。
例如,j 28 转到第 28 行。
【讨论】:
jump跳过了跳行,所以和until不相似
这听起来很明显:跳跃让你跳跃。 这意味着您不会执行您跳转的行:您应该使用它来跳过您不想运行的代码。
你可能需要tbreak(临时断点,第一次命中时自动删除。参数与break相同),就像我找到这个页面时所做的那样。
【讨论】:
如果你愿意使用另一个调试器,trepan,有更多的方式可以单步执行。它更像 gdb。所以你可以计算你想踩多少次。或者您可以在continue 调试器命令中提供行号,该命令实质上在该行设置一个临时断点,然后发出“继续”。其他改变步进的东西是"set different"。另请参阅您可以在 step 上添加的偶数后缀。
请注意,与 ipdb 一样,源文本也有语法高亮显示。
【讨论】: