VSCode 使用上下文管理器进行 Python 调试

问题描述 投票:0回答:1

我有一个如下代码块:

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,
        },
}
python vscode-debugger with-statement contextmanager
1个回答
0
投票

尽管您可能遇到 VSC 调试器使用方面的任何问题,但仍有一些解决方法可以解锁您:

  • 使用Python内置pdb调试器 - 只需将您的代码修改为:

    • Python 3.7+:
     with Validator.start_server():
         breakpoint()
         return manager(foo=bar)
    
    • 皮洪<=3.6:
     with Validator.start_server():
         import pdb; pdb.set_trace()
         return manager(foo=bar)
    

它将让您在命令行中单步执行代码。

命令行显示在终端中后输入“help”或最终输入“help ”,以获得有关如何使用它的更多指导。

有关使用的更多详细信息可以在pdb doc中找到。

© www.soinside.com 2019 - 2024. All rights reserved.