VSCode Django Debugging: Точки останова не работают с 'debugpy', но работают с типом 'python'
При попытке отладить команду управления Django в VSCode я столкнулся с проблемой, когда при использовании типа конфигурации 'debugpy' точки останова не ставились. Однако, когда я переключился на тип конфигурации 'python', точки останова заработали, как и ожидалось.
Шаги для воспроизведения
- Создайте новый проект Django и приложение .
- Создайте простую команду управления
- Установите конфигурацию отладки VSCode
- Установите точки останова в команде управления
- Попробуйте отладить команду управления
Команда управления Джанго (myapp/management/commands/hello_world.py
):
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = 'Prints Hello, World!'
def handle(self, *args, **options):
message = "Hello, World!" # Set a breakpoint on this line
self.stdout.write(message)
Конфигурация отладки VSCode (.vscode/launch.json
):
{
"version": "0.2.0",
"configurations": [
{
"name": "Django Command (debugpy)",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": [
"hello_world"
],
"django": true,
"justMyCode": false
},
{
"name": "Django Command (python)",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": [
"hello_world"
],
"django": true,
"justMyCode": false
}
]
}
Ожидаемое поведение
Отладчик должен остановиться на точке останова, установленной в команде управления для обоих типов конфигурации.
Актуальное поведение
- При
"type": "debugpy"
точка останова не сбивается, и команда выполняется до конца без остановки. - При
"type": "python"
точка останова срабатывает, как и ожидалось, и я могу пройти по коду.
Попытки решения
- Очистите все
.pyc
файлы и перезапустите VSCode .
- Убедитесь, что в VSCode выбран правильный интерпретатор Python .
- Убедитесь, что параметр DEBUG в Django равен True
- Попробовали с
"justMyCode": true
и"justMyCode": false
Вопрос
Почему отладчик ведет себя по-разному с типами конфигурации 'debugpy' и 'python'? Является ли это известной проблемой, и есть ли способ заставить 'debugpy' корректно работать с командами управления Django?
Любые соображения или решения будут высоко оценены!
Убедитесь, что вы установили или обновили расширение Python и расширение Python Debugger.
Debugpy был удален из расширения Python в пользу расширения Python Debugger в релизе May 2024.