我使用ipdb调试器的方式如下:
ipython --pdb bugged.py
在一个文件上窃听器.py:
^{pr2}$然后,调试器会在错误的行中启动;这是预期的行为:
---------------------------------------------------------------------------
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:我希望在脚本需要很长时间运行的情况下使用这种行为;我希望能够在修复脚本中间的一个小错误时继续执行,而不需要从头开始执行耗时的重新运行。在
他说:我知道这个错误是什么,我知道怎么解决它。有缺陷的代码只是为了说明我想要的行为(例如,如果我想的话,在打印之后恢复代码(a[5])。在
你得到一个错误,因为有问题的行试图访问一个只包含3的数组的第6个元素。在
通常,Python调试器允许跳过有问题的行,ipython不确定。但在我的标准安装中,我可以:
j 5
设置出错行之后的当前行,n
成功地执行了它。在相关问题 更多 >
编程相关推荐