ipdb продолжить после ошибки - PullRequest
0 голосов
/ 07 января 2019

Я использую отладчик 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: Я знаю, что это за ошибка, и я знаю, как ее исправить. Глючный код показан только для иллюстрации желаемого поведения (т. Е. Кода возобновления после печати (a [5]), если я хочу.

1 Ответ

0 голосов
/ 07 января 2019

Хорошо, вы получаете сообщение об ошибке, потому что ошибочная строка пытается получить доступ к 6-му элементу массива, который содержит только 3.

Обычно отладчик Python позволяет пропустить ошибочную строку, неуверенную в ipython. Но на моей стандартной установке я мог бы сделать:

j 5
n

j 5 устанавливает текущую строку после ошибочной, а n успешно выполняет ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...