Пошаговая отладка с помощью 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 в этом месте.