Стек вызовов пуст при отладке Python

#python #visual-studio-code #vscode-debugger #vscode-python

#python #visual-studio-code #vscode-отладчик #vscode-python

Вопрос:

Я работаю в многопоточном проекте на Python, используя VSCode и расширение Python. Все работало правильно, пока внезапно, без моего изменения каких-либо настроек) он перестал показывать запущенные процессы и потоки в стеке вызовов. Стек вызовов теперь пуст, пока не остановится на точке останова.

Это только для Python. Например, для C это работает, как показано на следующем рисунке:

стек вызовов c   ; отображение запущенных потоков

Здесь приведены мои файлы конфигурации:

settings.json:

 {
    "python.pythonPath": "C:\Users\tiago\AppData\Local\Programs\Python\Python38\python.exe",
    "python.linting.pylintEnabled": false,
    "python.linting.enabled": true,
    "python.linting.pylamaEnabled": false,
    "python.linting.flake8Enabled": true
}
  

запустите файл .json:

 {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "externalTerminal"
        }
    ]
}
  

Комментарии:

1. Рекомендуется отключить другие несущественные расширения, чтобы избежать помех между ними. Кроме того, пожалуйста, попробуйте использовать другие версии расширений Python и перезагрузите VSCode.

2. @JillCheng Я отключил все расширения, кроме расширения Python, и проблема сохраняется

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

Ответ №1:

Это происходило потому, что для переменной среды ‘GEVENT_SUPPORT‘ было установлено значение True, и, как сказал @fabioz, «В режиме gevent отладчик ожидает, что модули обработки потоков будут исправлены gevent и, следовательно, он не отслеживает их (как и в режиме gevent, ожидается, что у вас будет только 1 основнойпоток).»