24

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

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

4

4 回答 4

23

我相信这是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.
于 2015-08-01T15:43:33.363 回答
23

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

于 2015-08-19T13:54:08.777 回答
12

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

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

于 2016-11-30T16:13:54.393 回答
1

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

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

于 2015-07-03T02:03:27.660 回答