Пошаговая отладка с помощью IPython
Из того, что я прочитал, есть два способа отладки кода в Python:
С традиционным отладчиком, таким какpdb
или жеipdb
, Это поддерживает такие команды, какc
за ,continue
n
за ,step-over
s
заstep-into
и т.д.), но вы нене имеет прямого доступа к оболочке IPython, которая может быть чрезвычайно полезна для проверки объектов.
С помощьюIPython отвложения оболочка IPython в вашем коде. Ты можешь сделатьfrom ipython import embed
, а затем использоватьembed()
в вашем коде. Когда ваша программа / скрипт попадает вembed()
заявление, вы попали в оболочку IPython. Это позволяет полностью проверять объекты и тестировать код Python, используя все возможности IPython. Однако при использованииembed()
ты не можешьшаг за шагом через код больше с удобными сочетаниями клавиш.
Есть ли способ объединить лучшее из обоих миров? То есть
Быть способнымшаг за шагом через ваш код с помощью удобных сочетаний клавиш pdb / ipdb.На любом таком шаге (например, по заданному утверждению) иметь доступ к полноценномуОболочка IPython.Отладка IPythonкак в MATLAB:Пример такого типаулучшенная отладка " можно найти в MATLAB, где пользовательвсегда имеет полный доступ к движку / оболочке MATLAB, и она все еще можетшаг за шагом с помощью ее кода, определения условных точек останова и т. д. Из того, что я обсуждал с другими пользователями, эта функция отладки больше всего упускается при переходе с MATLAB на IPython.
Отладка IPython в Emacs и других редакторах:Я неЯ не хочу делать вопрос слишком конкретным, но я работаю в основном в Emacs, поэтому мне интересно, есть ли способ привнести в него эту функциональность.в идеалеEmacs (или редактор) позволит программисту устанавливать точки останова в любом месте кода и связываться с интерпретатором или отладчиком, чтобы он останавливался в выбранном вами месте, и приводил к полному интерпретатору IPython в этом месте.