我有一个如下代码块:
with Validator.start_server():
return manager(foo=bar)
其中
Validator.start_server()
设置如下:
class Validator:
@staticmethod
def start_server():
@contextmanager
def empty(bool):
yield bool
return empty(True)
我试图在
return manager(foo=bar)
行上设置断点并单步执行 manager
函数。然而,VSCode 完全忽略该断点并继续运行。在程序执行期间,我可以在调试器中看到正在运行的线程/子进程,我假设它们与上下文管理器相关。
这就是我的
launch.json
的样子:
{
"version": "0.2.0",
"configurations": [
{
"name": "context-manager-debug",
"type": "python",
"request": "launch",
"program": "/path/to/__main__.py",
"console": "integratedTerminal",
"justMyCode": true,
"subProcess": true,
},
}
尽管您可能遇到 VSC 调试器使用方面的任何问题,但仍有一些解决方法可以解锁您:
使用Python内置pdb调试器 - 只需将您的代码修改为:
with Validator.start_server():
breakpoint()
return manager(foo=bar)
with Validator.start_server():
import pdb; pdb.set_trace()
return manager(foo=bar)
它将让您在命令行中单步执行代码。
命令行显示在终端中后输入“help”或最终输入“help
有关使用的更多详细信息可以在pdb doc中找到。