Подтвердить что ты не робот

Можно ли запускать команды в IPython с помощью отладки?

Вот мои действия в IPython:

> import my_module
> import ipdb

Теперь в моем модуле отсутствует исполняемый код, он только объявляет классы. Поэтому я хочу сделать выражение:

> g = my_module.Graph()
> f = open('test.osm')
> g.from_osm(f)

Я хочу поставить точку останова внутри Graph.from_osm, не редактируя файл. Я не хочу помещать последние строки в файл и делать python -m ipdb .... Я просто хочу запускать команды и отлаживать.

Возможно ли это?

добавил: Я вижу, возможно

%run -d script_name

или

> import pdb
> pdb.run('statement')

но это невозможно сделать ipdb.run('statement'), там .run в ipdb!

4b9b3361

Ответ 1

Поскольку IPython 3.2.2, магия %debug, если задана аргумент (одна строка или ячейка), выполняется в соответствии с отладчик.

  • Он прерывается перед выполнением чего-либо, давая вам возможность установить точки останова и/или начать шаг за кодом.
  • И он принимает аргумент --breakpoint, который устанавливает еще одну точку останова (как часть команды, она будет сохранена в истории команд, сохраняя при этом типизацию для повторных вызовов).

Ответ 2

Возможно, команды "magic" % debug и/или % pdb в IPython могут вам помочь.