Как отлаживать Плагины sublime во время разработки

Я хочу отладить свой плагин с pdb, но он не работает. Я получаю эти ошибки

Traceback (most recent call last):
  File "./sublime_plugin.py", line 362, in run_
  File "./useIt.py", line 14, in run
    for region in self.view.sel():
  File "./useIt.py", line 14, in run
    for region in self.view.sel():
  File ".bdb.py", line 46, in trace_dispatch
  File ".bdb.py", line 65, in dispatch_line
bdb.BdbQuit

у кого-нибудь есть идея? Или какой-то другой способ отладки плагина sublime?

4 ответов


проблема в том, что sys.stdin не привязан ни к чему обычно. Но,sys.stdin работает, если вы запускаете SublimeText2 с консоли:

  • на Mac запустите приложение, найдя исполняемый файл в пакете ресурсов, введя полный путь в терминале:

    /Applications/Sublime\ Text\ 2.app/Contents/MacOS/Sublime\ Text\ 2
    
  • в Windows запустите приложение с консоли Windows:

    "C:\Program Files\Sublime Text 2\sublime_text.exe"
    

    предварительный, у меня есть нет установки Windows Sublime Text 2, поэтому эта командная строка основана на быстром Google

теперь приложение имеет консоль; но sys.stdout по-прежнему перенаправляется на встроенную консоль SublimeText 2. Вы хотите запустить отладчик с правильным stdout, тот, который все еще подключен к вашей консоли. Вместо import pdb; pdb.set_trace() использовать:

import pdb, sys; pdb.Pdb(stdout=sys.__stdout__).set_trace()

оригинальный консоль stdout сохранен в sys.__stdout__ и передать в pdb.Pdb() вы получаете полностью функциональный pdb сессии.


работая над моим плагином, мне не очень повезло с pdb, и "печать" не является эффективным опытом отладки (например, если вы не уверены, где дефект, вы можете добавить много "печати" - а затем удалить их после).

существует гораздо лучшая альтернатива, если вы запустите Windows. Последняя версия 2.2 the инструменты Python для Visual Studio отлично работает для отладки Sublime плагинов. Вы получаете все обычные функции отладки Visual Studio и это отшлифованный опыт. Просто выбрать "pluginhost.exe " и механизм отладки Python в диалоговом окне присоединения. До 2.2 инструменты Python не работали должным образом против Sublime, например, шаг был сломан.

раскрытие: я работаю в Visual Studio, но не работаю на этих инструментах. Недавно я работал с разработчиком Python tools, чтобы исправить ошибки, с которыми я столкнулся, используя эти инструменты для написания моего плагина.

на Community Edition Visual Studio 2015 бесплатно для индивидуальных разработчиков и небольших организаций. Просто убедитесь, что вы проверяете инструменты Python в диалоговом окне установки. И, конечно же, вы должны работать под управлением Windows.


ваша проблема в том, что sys.stdin и sys.stdout (Edit: stdout переходит к консоли) подключены к внутренностям sublime text-где вы ожидаете, что сможете управлять отладчиком?

то, что вы хотите, это интерфейс удаленной отладки, который взаимодействует через что-то другое, чем stdio, например rpdb.


самый простой способ, который я нашел, - использовать Visual Studio.

У вас должны быть инструменты разработки Python для Visual Studio (вы можете загрузить их, открыв установщик Visual Studio, нажав "Дополнительно", "Изменить" и выбрав "разработка Python").

для отладки вам нужно открыть visual studio, выберите на панели инструментов: Debug-Attach to process (Ctrl+Alt+P), а затем найдите 'plugin_host.exe' и прикрепить. Тогда откройте файл .plugin.py-и поставить точку останова где-нибудь и ... ты можешь идти.