我通过以下方式使用ipdb调试器:
ipython --pdb bugged.py
在文件 bugged.py 上:
import numpy as np
a = np.array([0, 1, 2])
print(a[5])
a = 2 + a
print(a)
然后发生的事情是调试器在错误的行开始运行;这是预期的行为:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
/home/jrlab/Desktop/Current/debug_ipython/bugged.py in <module>()
2
3 a = np.array([0, 1, 2])
----> 4 print(a[5])
5 a = 2 + a
6 print(a)
IndexError: index 5 is out of bounds for axis 0 with size 3
> /home/jrlab/Desktop/Current/debug_ipython/bugged.py(4)<module>()
2
3 a = np.array([0, 1, 2])
----> 4 print(a[5])
5 a = 2 + a
6 print(a)
ipdb> n
~/Desktop/Current/debug_ipython>
但是我真正想要的是当我按 n (或任何其他命令)时,在下一条指令处继续执行,也就是说,一旦我通过以下方式修复,便能够继续运行脚本用!手命令执行错误的行。
有什么办法吗?
1:在脚本需要很长时间才能运行的情况下,我希望这种行为。当我在脚本中间修复了一个小错误时,我希望能够恢复执行,而无需从头开始进行耗时的重新运行。
2:我知道此错误是什么,我知道如何解决。越野车代码仅作为说明我想要的行为的一种方式显示(即,如果需要的话,可以在print(a [5])之后恢复代码。
答案 0 :(得分:0)
好吧,您会收到一条错误消息,因为有问题的行Trie可以访问仅包含3的数组的第6个元素。
通常,Python调试器允许跳过有问题的行,不确定ipython。但是在我的标准安装中,我可以这样做:
j 5
n
j 5
在有问题的行之后设置当前行,而n
成功执行它。