Как осуществление изучения я пишу мне простое расширение / плагин / макро-использование платформы IronPython - я получил работу основ, но я хотел бы добавить некоторую основную поддержку отладки для создания моего редактора сценариев легче работать с.
Я искал вокруг в Интернете немного, и я нашел несколько хороших ресурсов при записи управляемых отладчиков (включая превосходный блог.Net Debugging Mike Stall и MSDN documentaiton на CLR, Отлаживающем API) - я понимаю, что IronPython является по существу IL однако кроме этого, я немного потерян о том, как начать в особенности:
(Я не интересуюсь аспектом GUI создания отладчика на данный момент - я уже получил довольно хорошую идею того, как это могло бы работать),
Еще несколько ссылок начали прояснять ситуацию - есть 2 способа добавления поддержки отладчика, которые я видел:
Первый - использовать тот факт, что IronPython испускает IL и отлаживать его, используя стандартные методы, используемые для отладки приложений .Net. В блоге Гарри Пирсона здесь есть серия статей о разработке ipydbg - отладчика python, использующего этот подход.
Из-за этого ограничения была создана библиотека Microsoft.Scripting.Debugging, которая гораздо больше подходит для приложений, которые запускают IronPython "встроенным" способом (т.е. в том же процессе).
О ней есть введение здесь и более подробная статья в блоге о том, как она используется здесь - по сути, она состоит из функции обратного вызова, которая выполняется каждый раз, когда происходит что-то "интересное" (каждый раз, когда мы входим в функцию, каждый раз, когда мы возвращаемся из функции и каждый раз, когда выполняется строка). Выполнение сценария блокируется, пока выполняется функция обратного вызова, что позволяет "прервать" сценарий.
Я решил использовать второй подход - я буду обновлять этот пост по мере нахождения дополнительной информации, которая может оказаться полезной для других, пытающихся сделать это.
Я не эксперт в IronPython, но у меня есть некоторый опыт отладки управляемых приложений с помощью WinDbg. Я вкратце посмотрел, как приложения IronPython выглядят в отладчике. Из-за динамической природы Python во время выполнения создается много кода. Это делает отладку приложения IronPython несколько сложнее, чем, скажем, приложения C #, потому что у вас, так сказать, есть дополнительный уровень генерации кода.
Гарри Пирсон, который когда-то активно участвовал в разработке Iron-языков, написал серию сообщений в блоге о написании отладчика IronPython , в которых много деталей.