调试时调用堆栈为空 Python
Call Stack empty when debugging Python
我正在 Python 的一个多线程项目中工作,使用 VSCode 和 Python 扩展。
一切正常,直到突然之间,我没有更改任何设置)它停止在调用堆栈中显示 运行 进程和线程。调用堆栈现在是空的,直到它在断点处停止。
这仅适用于 Python。对于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
}
launch.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"
}
]
}
发生这种情况是因为我将“GEVENT_SUPPORT”环境变量设置为 True,并且 as @fabioz said, "在 gevent 模式下,调试器期望 gevent 的线程模块是 monkey-patched,因此它不会跟踪那些(因为在 gevent 模式下,你只需要 1 个主线程)。"
我正在 Python 的一个多线程项目中工作,使用 VSCode 和 Python 扩展。 一切正常,直到突然之间,我没有更改任何设置)它停止在调用堆栈中显示 运行 进程和线程。调用堆栈现在是空的,直到它在断点处停止。
这仅适用于 Python。对于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
}
launch.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"
}
]
}
发生这种情况是因为我将“GEVENT_SUPPORT”环境变量设置为 True,并且 as @fabioz said, "在 gevent 模式下,调试器期望 gevent 的线程模块是 monkey-patched,因此它不会跟踪那些(因为在 gevent 模式下,你只需要 1 个主线程)。"