Можно ли запускать команды в IPython с отладкой? - PullRequest
15 голосов
/ 13 марта 2012

Вот мои действия в 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!

Ответы [ 2 ]

3 голосов
/ 21 сентября 2017

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

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

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

...