调试器未在VS Code for Python的断点处停止

时间:2019-06-27 16:05:10

标签: 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如下所示。我尝试通过按绿色箭头和按F5来使用调试器,但似乎都无法使调试器正常工作。我的“ launch.json”文件也显示在下面。

hello.py:

msg = "Hello World!"
print(msg) # Breakpoint

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": "integratedTerminal",
            "stopOnEntry": true
        },
    ]
}

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

6 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:3)

我遇到了同样的行为,并能够通过以下方式安装 Python 的虚拟环境来解决它:

[MyProjectFolder] \ venv

通过输入命令

python -m venv [MyProjectFolder]\venv

在控制台中。

VS Code 似乎完全期望这种文件夹结构。

在我直接在我的项目文件夹中安装 venv-folder-structure 之前,即

[MyProjectFolder] \ Scripts
[MyProjectFolder] \ Lib
[MyProjectFolder] \ Include
[MyProjectFolder] \ pyvenv.cfg

哪个不起作用并导致了所描述的调试问题。

仅供参考:VS Code 1.52.1 版和 Python 3.8.5

答案 2 :(得分:2)

如果您使用的是 pytest-cov 模块,您可能还想看看 pytest configuration settings 注意:

<块引用>

注意如果您安装了 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"}
        }
    ]
}

答案 3 :(得分:0)

我从 Python 3.7 版升级到 3.9 版时遇到了同样的问题。后来发现老版本是32位的,我升级到的新版本是64位的,这显然是导致问题的原因。卸载 64 位版本并安装 32 位版本的 Python 3.9 解决了我的问题,然后我可以再次使用 Visual Studio Code 断点功能。

答案 4 :(得分:0)

我最近发现(2020 年 5 月 5 日)使用 Python 3.9 作为解释器,断点没有命中。安装 3.8,它会重新开始工作。

答案 5 :(得分:0)

从 Python 3.9 降级到 3.8 对我有用。

VC 代码 1.56.2 忽略了在 Windows 10 版本 20H2 上运行 Python 3.9 64 位的断点。安装 Python 3.8.10 64 位修复了该问题。我只需要在 VS 代码中选择 Python 3.8.10 解释器,它现在可以识别断点。不需要更改配置文件,例如,我不需要 "justMyCode": false

我意识到这是一个老问题,但我的谷歌搜索让我找到了它。许多以前的答案不再适用。因此,我将针对 2021 年登陆这里并尝试使用 3.9 的其他人发布此修复程序。