Удаленная отладка VSCode Python внезапно не работает

Начавшийся пару дней назад мой обычный процесс отладки кода Python через pytest просто перестал работать.

Мой предыдущий процесс был следующим:

  1. Вставьте макрос debugpy либо над определением теста pytest, либо на верхнем уровне отлаживаемого кода.
import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()
  1. Вставьте вызов debugpy.breakpoint() над строкой, чтобы остановиться, ИЛИ используйте красную кнопку желоба, чтобы отметить точку останова (менее надежно).

  2. Нажмите клавишу F5, когда pytest запустится, и в терминале появится сообщение collecting....

Этот процесс работал целых два месяца с тех пор, как я перешел с PyCharm. По состоянию на пару дней назад новое поведение выглядит следующим образом:

  • Если я использую вызов debugpy.breakpoint() для остановки выполнения, код остановится, однако, в, казалось бы, случайном месте. Прежде чем я переустановил почти все (VSCode, создал новую виртуальную машину Linux), он останавливался на случайной строке внутри файла из библиотеки pytest. После того, как я все переустановил, теперь он останавливает случайную строку внутри нашего кода разрыва тестовой базы данных.
  • Если я использую красную кнопку желоба, чтобы отметить точку останова, отладчик вообще не остановится.

Вещи, которые я уже пробовал:

  1. Чистая переустановка VSCode.
  2. Уничтожить и воссоздать бродячую виртуальную машину.
  3. Добавьте "env": {"PYTEST_ADDOPTS": "--no-cov"} к моему launch.json. (Линтер предупреждает, что это свойство здесь не разрешено и опция не добавляется во время выполнения).
  4. Понизил версию расширения Python.
  5. Переключен вариант запуска justMyCode.
  6. Пробовал несколько веток git.
  7. Пробовал несколько модулей в нашем монорепозитории.

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

Больше информации:

Version: 1.74.2 (Universal)
Commit: e8a3071ea4344d9d48ef8a4df2c097372b0c5161
Date: 2022-12-20T10:26:09.430Z (3 wks ago)
Electron: 19.1.8
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: 10.2.154.15-electron.0
OS: Darwin x64 21.6.0
Sandboxed: No

Запуск.json

    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Remote Attach",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": 5678
            },
            "pathMappings": [
                {
                    "localRoot": "/mnt/the_repo_folder",
                    "remoteRoot": "/mnt/the_repo_folder"
                }
            ],
            "justMyCode": true
        }
    ]
}

Попробуйте понизить версию debugpy и других зависимостей или отладить код в локальной среде разработки, чтобы проверить, возникает ли проблема. Проверьте наличие изменений в файле конфигурации. Проверка официальной документации vscode поможет.

JialeDu 11.01.2023 08:30
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
0
1
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно комментарию @JialeDu, понижение версии debugpy, похоже, решило проблему. Оказывается, внезапные проблемы совпадают с выпуском версии этого пакета до 1.6.5. Таким образом, переход на 1.6.4 с двухмесячной давности решил эту проблему. Я буду сообщать об этом как об ошибке на github библиотеки.

ОБНОВЛЕНИЕ — 24 января 2023 г.: Поведение было изменено с тех пор, как я понизил версию пакета, поэтому похоже, что это либо вообще не исправление, либо мне просто ненадолго повезло. После дополнительных возни я обнаружил, что более постоянное исправление — отключить захват в pytest, запустив тест с флагами: -s и --no-cov. Только в некоторых модулях я должен это делать, что все равно странно.

Привет smallpants, рад узнать, что вы нашли решение этой проблемы! Пожалуйста, подумайте над тем, чтобы ответить на него и принять его как ответ, чтобы изменить его статус на «Отвечено». Это также поможет другим решить аналогичную проблему. Просто напоминание :)

MingJie-MSFT 16.01.2023 07:14

Другие вопросы по теме