/ vscode-recipes

Акшай Авинаш (@ akshay11298)

Этот рецепт показывает, как отлаживать приложение Python с помощью расширения Python VS Code.

Начало работы

  1. Убедитесь, что у вас установлена ​​последняя версия VS Code.

  2. Убедитесь, что вы иметь установленное расширение Python.

  3. При желании вы также можете установить линтер, чтобы выбросить ошибки.

Настроить отладку VS Code с помощью файла launch.json

  1. Щелкните значок отладки на панели действий, чтобы открыть представление отладки.

  2. Затем щелкните значок шестеренки, чтобы настроить файл launch.json, выберите Launch для среды.

  3. Вы можете получить выбор из доступных сред, выберите

  4. Сгенерированный json будет иметь множество конфигураций. Вы можете оставить их все или только те, которые вам нужны.

     {"version": "0.2.0", "configurations": [{"name": "Python  : Текущий файл (интегрированный терминал) "," тип ":" python "," запрос ":" запуск "," программа ":" $ {файл} "," консоль ":" IntegratedTerminal "}, {" имя ":  "Python: Attach", "type": "python", "request": "attach", "port": 5678, "host": "localhost"}, {"name": "Python: Module", "type  ":" python "," request ":" launch "," module ":" enter-your-module-name-here "," console ":" IntegratedTerminal "}, {" name ":" Python: Django ",  "тип": "python", "запрос": "запуск", "программа": "$ {workspaceFolder}/manage.py", "консоль": "IntegratedTerminal", "args": ["runserver", "-  -noreload "," --nothreading "]," django ": true}, {" name ":" Python: Flask "," type ":" python "," request ":" launch "," module ":"  flask "," env ": {" FLASK_APP ":" app.py "}," args ": [" run "," --no-debugger "," --no-reload "]," jinja ": true  }, {"name": "Python: текущий файл (внешний терминал)", "type": "python", "request": "la  unch "," program ":" $ {file} "," console ":" externalTerminal "}]} 

  5. Для базовой отладки Python файлов, вам потребуется только следующая конфигурация:

     {//Используйте IntelliSense, чтобы узнать о возможных атрибутах. //Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов. //Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2. 0 "," configurations ": [{" name ":" Python: текущий файл (интегрированный терминал) "," type ":" python "," request ":" launch "," program ":" $ {file} "  , "console": "IntegratedTerminal"}, {"name": "Python: текущий файл (внешний терминал)", "type": "python", "request": "launch", "program": "$ {file  } "," console ":" externalTerminal "}]} 

Начать отладку.

  1. Откройте файл Python в VS Code.

  2. Перейдите в представление отладки, выберите Начать отладку затем нажмите F5 или нажмите зеленую кнопку воспроизведения.

  3. VS Code теперь должен отображать журналы сервера rails.

  4. Установите точку останова в любом из файлов, щелкнув пробел перед номером строки. Должна появиться красная точка, указывающая на точку останова.

  5. Нажмите F5 , чтобы начать отладку.

  6. Ваша точка останова теперь должен быть нажат.

  7. Чтобы продолжить, снова нажмите F5 , пока не дойдете до конца.



/ptvsd Archived

Реализацией замены DAP для Python является отладка, которая основан на ветке разработки (5.x) ptvsd. Вся дальнейшая разработка будет происходить в режиме отладки; больше не будет никаких коммитов или выпусков ptvsd.

Если вы используете расширение Python для кода Visual Studio, вы должны автоматически переключиться на отладку, если вы используете актуальная версия расширения. Отправляйте любые отчеты об ошибках непосредственно в репозиторий debugpy.

Если вы используете Visual Studio 2019 16.5 или новее, вы должны автоматически переключиться на отладку. Visual Studio 2019 16.4 или более ранние версии, включая Visual Studio 2017, несовместимы с debugpy. Мы рекомендуем вам обновить до последней версии Visual Studio, чтобы перейти на debugpy.

Если вы используете ptvsd напрямую, рассмотрите возможность перехода на debugpy. Это требуется для постоянной поддержки со стороны расширения Python и для получения исправлений ошибок. Проблемы с ptvsd, которые также могут быть воспроизведены в debugpy, должны быть зарегистрированы непосредственно в репозитории debugpy. Любые проблемы, которые характерны для ptvsd и не могут быть воспроизведены с помощью debugpy, не будут исправлены в ptvsd.

Этот отладчик основан на протоколе адаптера отладки для кода VS: debugProtocol.json

ptvsd Использование интерфейса командной строки

Отладка файла сценария

Чтобы запустить файл сценария с включенной отладкой, но не дожидаясь подключения отладчика (т.е.. код начинает выполняться немедленно):

 -m ptvsd --host localhost --port 5678 myfile.py 

Чтобы дождаться отладчик подключается перед запуском вашего кода, используйте переключатель - wait .

 -m ptvsd --host localhost --port 5678 -  -wait myfile.py 

Параметр - host указывает интерфейс, на котором сервер отладки прослушивает соединения. Чтобы иметь возможность подключаться с другой машины, убедитесь, что сервер прослушивает общедоступный интерфейс — использование 0.0.0.0 заставит его прослушивать все доступные интерфейсы:

 -m ptvsd --host 0.0.0.0 --port 5678 myfile.py 

Это следует делать только в защищенных сетях, поскольку любой, кто может подключиться на указанный порт может затем выполнить произвольный код в отлаживаемом процессе.

Чтобы передать аргументы сценарию, просто укажите их после имени файла. Это работает так же, как и с самим Python — все, вплоть до имени файла, обрабатывается ptvsd, но все после этого становится sys.argv запущенного процесса.

Отладка модуля

Чтобы запустить модуль, используйте переключатель -m вместо имени файла:

 -  m ptvsd --host localhost --port 5678 -m mymodule 

Как и в случае со сценариями, аргументы командной строки можно передать модулю, указав их после имени модуля. Все остальные переключатели ptvsd в этом режиме работают идентично; в частности, - wait можно использовать для блокировки выполнения, пока отладчик не подключится.

Присоединение к запущенному процессу по идентификатору

Следующая команда вводит отладчик в процесс с заданным PID, на котором выполняется код Python. После возврата команды сервер ptvsd запускается внутри процесса, как если бы этот процесс был запущен самим -m ptvsd .

 -  m ptvsd --host localhost --port 5678 --pid 12345 

ptvsd Использование импорта

Включение отладки

В начале сценария импортируйте ptvsd и вызовите ptvsd.enable_attach () , чтобы запустить сервер отладки. Имя хоста по умолчанию — 0.0.0.0 , порт по умолчанию — 5678; их можно переопределить, передав кортеж (хост, порт) в качестве первого аргумента enable_attach () .

 import ptvsdptvsd.enable_attach () ... 

Ожидание подключения отладчика

Используйте ptvsd. wait_for_attach () , чтобы заблокировать выполнение программы, пока не будет подключен отладчик.

 import ptvsdptvsd.enable_attach () ptvsd.wait_for_attach () # блокирует выполнение, пока не будет подключен отладчик  ... 

breakpoint () function

В Python 3.7 и выше ptvsd поддерживает стандартную функцию breakpoint () . Используйте функцию ptvsd.break_into_debugger () для аналогичного поведения и совместимости со старыми версиями Python (3.6 и ниже). Если отладчик подключается при вызове любой из этих функций, он приостанавливает выполнение в вызывающей строке, как если бы для нее была установлена ​​точка останова. Если отладчик не подключен, функции ничего не делают, и код продолжает нормально выполняться.

 import ptvsdptvsd.enable_attach () while True: ... breakpoint () # или  ptvsd.break_into_debugger () в  

аргументы настраиваемого протокола

аргументы запроса запуска

 {"debugOptions": ["RedirectOutput",//Перенаправлять ли stdout и stderr (см. pydevd_comm.CMD_REDIRECT_OUTPUT) «WaitOnNormalExit»,//Ждать ввода пользователя после обычного выхода из кода пользователя «WaitOnAbnormalExit»,//Ждать  пользовательский ввод после выхода кода пользователя с ошибкой "Django",//Включает отладку шаблона Django "Jinja",//Включает отладку шаблона Jinja (Flask) "FixFilePathCase",//См. FIX_FILE_PATH_CASE в wrapper.py "DebugStdLib",//Будет ли  для включения отладки стандартных библиотечных функций «StopOnEntry»,//Следует ли останавливаться на первой строке пользовательского кода «ShowReturnValue»,//Показывать возвращаемые значения функций]} 

Прикрепить запрос аргументы

 {"debugOptions": ["RedirectOutput",//Перенаправлять ли stdout и stderr (см. pydevd_comm.CMD_REDIRECT_OUTPUT) «Django»,//Включает отладку шаблона Django «Jinja»,//Включает отладку шаблона Jinja (Flask)  "FixFilePathCase",//См. FIX_FILE_PATH_CASE в wrapper.py "DebugStdLib",//Включить ли отладку стандартных библиотечных функций "WindowsClient",//Является ли клиентская ОС Windows "UnixClient",//Используется ли клиентская ОС Unix "ShowReturnValue  ",//Показать возвращаемые значения функций]," pathMappings ": [{" localRoot ":" C: \ Project \ src ",//Локальный корень (где запущены исходный код и отладчик)" remoteRoot ":"/home /smith/proj "//Удаленный корень (где запущен удаленный код)},//Добавить дополнительные сопоставления путей]} 

Ведение журнала отладчика

Чтобы включить внутреннее ведение журнала отладчика через интерфейс командной строки, можно использовать переключатель - log-dir :

 -m ptvsd --log-dir  путь/к/журналам ... 

При использовании enable_attach то же самое можно сделать с помощью log_dir аргумент:

 ptvsd.enable_attach (log_dir = 'path/to/logs') 

В В обоих случаях переменная среды PTVSD_LOG_DIR также может иметь тот же эффект.

Когда ведение журнала включено, ptvsd создаст файл журнала с именем ptvsd- .log в указанном каталоге, где — это идентификатор отлаживаемого процесса. Когда включена отладка подпроцесса, для каждого подпроцесса создается отдельный журнал.

Оцените статью
clickpad.ru
Добавить комментарий