Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Breakpoint set in source code are not hit when attaching to a devcontainer process

未关闭
#1,538 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
42/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
python
领域
devtools

调研方向

从 launch.json 中的 Python: Attach Local 和 Python: Attach Remote 配置开始,然后运行 scripts/develop,并在列出的 devcontainer 环境中复现 attach 流程。比较调用 debugpy.breakpoint() 前后的行为;完成的标准是,在不使用该手动 breakpoint 的情况下,VS Code UI 中设置的源代码断点能够在 attach 期间命中。

由索引模型根据 Issue 内容生成。

描述

bug

Not sure if this issue relates to this repository or would maybe better fit in main VSCode repo. Or maybe in VSCode python debugger extension.

Environment data

  • debugpy version: 1.8.1
  • OS and version: Debian 12 (bookworm) (container image: mcr.microsoft.com/devcontainers/python:3.12)
  • Python version: 3.12.2
  • Using VS Code or Visual Studio: VSCode with devcontainer
  • VSCode: 1.87.1
  • Python debugger (VSCode extension): v2024.2.0

Actual behavior

Breakpoints (set in source code) are not hit after attaching the debugger to the process under development in devcontainer.

The development environment has different launch.json configurations.
They were updated to "type": "debugpy" following deprecation warnings and trying to overcome this issue (they were "type": "python" before) but the issue is the same whatever this setting.

Launch configurations for launching and debugging a python process (i.e. the "request": "launch") work correctly. Just the "request": "attach" to a running process doesn't hit the breakpoints.

I've enabled debugpy logs and looks as if the commands to set/enable/delete breakpoints are accepted correctly by the debug server (or whatever it is)

Also,
If I use:

import debugpy
debugpy.breakpoint()

in the process under debug, it works correctly (i.e. the debugger stops and waits for stepping or whatever any other debug action.

More important, after this invoked breakpoint, the breakpoints set in source code through the vscode UI start working correctly as if no issue were there (i.e. I can add delete disable breakpoints and they'll all work)

The issue started (without any configuration change in the development environment) around when installing latest vscode (I'm not sure if this also triggered updating any other component like debugpy and/or the debugpy vscode extension

Expected behavior

Having the breakpoints set in vscode UI source edit window work without any trick (manually invoking the debugpy.breakpoint() at least once)

Steps to reproduce:

This is my dev environment but beside installing, it would need some manual configuration of the process under debug (Home Assistant) before being able to predictably set any breakpoint.

  1. clone https://github.com/krahabb/meross_lan
  2. start the task "Run Home Assistant...."
  3. from 'Run and Debug' launch the 'Python: Attach local'

At any rate, these are key configurations of the dev environment:

"devcontainer.json"

{
    "name": "ludeeus/integration_blueprint/meross_lan",
    "image": "mcr.microsoft.com/devcontainers/python:3.12",
	"runArgs": [ "--network=host" ],
    "postCreateCommand": "scripts/setup",
    "customizations": {
        "vscode": {
            "extensions": [
                "ms-python.python",
                "ms-python.vscode-pylance"
            ],
            "settings": {
                "files.eol": "\n",
                "editor.tabSize": 4,
                "python.pythonPath": "/usr/local/bin/python3",
                "python.analysis.autoSearchPaths": false,
                "python.formatting.provider": "black",
                "python.formatting.blackPath": "/usr/local/py-utils/bin/black",
                "editor.formatOnPaste": false,
                "editor.formatOnSave": true,
                "editor.formatOnType": true,
                "files.trimTrailingWhitespace": true
				}
        }
    },
    "remoteUser": "root",
    "features": {
        "ghcr.io/devcontainers/features/rust:1": {}
    }
}

"settings.json"

{
    "files.associations": {
        "*.yaml": "home-assistant"
    },
    "python.analysis.typeCheckingMode": "basic",
    "python.analysis.diagnosticSeverityOverrides": {
        "reportShadowedImports": "none"
    },
    "python.analysis.extraPaths": [
        "./custom_components/meross_lan"
    ],
    "testing.defaultGutterClickAction": "debug",
    "python.testing.unittestEnabled": false,
    "python.testing.pytestEnabled": true,
    "python.testing.pytestArgs": [
        "tests"
    ],
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter"
    }
}

"launch.json"

{
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Emulator",
      "type": "debugpy",
      "request": "launch",
      "module": "aiohttp.web",
      "justMyCode": false,
      "args": [
        "-H",
        "127.0.0.1",
        "-P",
        "40000",
        "emulator:run",
        "emulator_traces",
        "-key pippo",
        "-broker localhost:8883",
        //"-uuid 01234567890123456789012345678901"
      ]
    },
    {
      // Example of attaching to local debug server
      "name": "Python: Attach Local",
      "type": "debugpy",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      },
      "justMyCode": false,
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}",
          "remoteRoot": "."
        }
      ]
    },
    {
      // Example of attaching to my production server
      "name": "Python: Attach Remote",
      "type": "debugpy",
      "request": "attach",
      "connect": {
        "host": "homeassistant.local",
        "port": 5678
      },
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}",
          "remoteRoot": "/usr/src/homeassistant"
        }
      ]
    },
    {
      "name": "Debug Tests",
      "type": "debugpy",
      "request": "launch",
      "program": "${file}",
      "purpose": [
        "debug-test"
      ],
      "env": {
        "PYTEST_ADDOPTS": "--no-cov"
      },
      "justMyCode": false
    },
    {
      "name": "Coverage",
      "type": "debugpy",
      "request": "launch",
      "module": "pytest",
      "args": [
        "--cov=custom_components/meross_lan",
        "--cov-report=html:htmlcov",
      ],
    }
  ]
}

"tasks.json"

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run Home Assistant on port 8123",
            "type": "shell",
            "command": "scripts/develop",
            "problemMatcher": []
        }
     ]
}

"scripts/develop"

#!/usr/bin/env bash

set -e

cd "$(dirname "$0")/.."

# Create config dir if not present
if [[ ! -d "${PWD}/config" ]]; then
    mkdir -p "${PWD}/config"
    hass --config "${PWD}/config" --script ensure_config
fi

cp "${PWD}/.devcontainer/configuration.yaml" "${PWD}/config/configuration.yaml"

# Set the path to custom_components
## This let's us have the structure we want <root>/custom_components/integration_blueprint
## while at the same time have Home Assistant configuration inside <root>/config
## without resulting to symlinks.
export PYTHONPATH="${PYTHONPATH}:${PWD}/custom_components"

# Start Home Assistant
hass --config "${PWD}/config" --debug

主要语言
Python
星标
2.5k
派生
202
平均合并
5 天 1 小时
30 天内合并 PR
1

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/debugpy 的其他 Issue

查看 microsoft/debugpy 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。