调试器不会在 VS Code for Python 中的断点处停止

rog*_*888 27 python visual-studio-code vscode-debugger

我刚刚安装了 VS Code 和 Python 扩展,但我无法让调试器工作。每次我尝试使用调试器时,它都会跳过我设置的任何断点并像往常一样运行程序。

我在装有 Python 3.7.3 和 Python 扩展的 Windows 10 PC 上使用 VS Code。我按照这里的说明(https://code.visualstudio.com/docs/python/python-tutorial)在 C:\python_work\hello 中创建一个名为“hello”的测试文件夹,并创建一个名为“hello.py”的程序在那个文件夹里面。hello.py 如下所示。我尝试通过按绿色箭头和按 F​​5 来使用调试器,但似乎都没有使调试器正常工作。我的“launch.json”文件也如下所示。

你好.py:

msg = "Hello World!"
print(msg) # Breakpoint
Run Code Online (Sandbox Code Playgroud)

启动.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": "integratedTerminal",
            "stopOnEntry": true
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

我希望底部栏变成橙色,程序停止在第二行,让我可以检查预览窗格中的局部和全局变量。相反,当程序运行时,底部栏保持橙色 1/2 秒,就像我按下了“在终端中运行 Python 文件”一样,而没有在断点处停止。请帮忙!

Tom*_*iak 50

如果您正在使用pytest-cov模块,您可能还想查看pytest 配置设置注意:

注意如果安装pytest-cov了覆盖率模块,VS Code 在调试时不会在断点处停止,因为pytest-cov使用相同的技术来访问正在运行的源代码。为了防止这种行为,请在调试测试时包含--no-cov在内pytestArgs,例如通过添加"env": {"PYTEST_ADDOPTS": "--no-cov"}到调试配置中。

请参阅下面的示例配置文件 ( launch.json):

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Tests",
            "type": "python",
            "request": "test",
            "console": "integratedTerminal",
            "justMyCode": false,
            "env": {"PYTEST_ADDOPTS": "--no-cov"}
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

  • 这也正是我面临的问题。我的 .vscode/settings.json 中有这个: { "python.testing.pytestArgs": [ "--cov=src", "--cov-report", "html", "tests" ] // 删除覆盖相关线路解决了这个问题。 (7认同)
  • 就我而言,覆盖范围是在我的“setup.cfg”文件中设置的。它的工作方式是从该文件中删除它或使用 Tomasz 的“env”提示。谢谢你! (2认同)

小智 40

设置"justMyCode": false使它在断点处停止:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Debug Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "stopOnEntry": true,
            "justMyCode": false
        },
    ]
}
Run Code Online (Sandbox Code Playgroud)

  • 这行得通……我怎么能猜出这样的事情呢? (21认同)
  • 如何找到该文件来进行此编辑? (5认同)
  • 如果没有像 StackOverflow 这样的资源,我想我永远无法解决这个问题。Just My Code 是一组功能,通过隐藏您可能正在使用的优化库的一些细节(例如 .NET Framework 本身),可以更轻松地专注于调试代码(https://github.com/OmniSharp 说) /omnisharp-vscode/blob/master/debugger-launchjson.md#just-my-code)。但我正在运行一个我编写的程序,其中包含几行简单的代码,并且没有调用任何模块。谁能解释一下为什么我需要关闭此功能? (4认同)
  • 奇怪的是默认情况下它不是“true”!我现在面临的另一个问题是,执行最后一行后并没有结束调试。它进入“runpy.py”......我应该如何解决这个问题? (2认同)