Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#1,538 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
42/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
devtools

Direzione di ricerca

Inizia con le configurazioni Python: Attach Local e Python: Attach Remote in launch.json, quindi esegui scripts/develop e riproduci il flusso di attach nell’ambiente devcontainer indicato. Confronta il comportamento prima e dopo la chiamata a debugpy.breakpoint(); il lavoro è completato quando i breakpoint del codice sorgente impostati nell’interfaccia utente di VS Code vengono raggiunti durante un attach senza quel breakpoint manuale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

Lingua principale
Python
Stelle
2.5k
Fork
202
Merge medio
5g 1h
PR unite (30g)
1

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/debugpy

Tutte le issue di microsoft/debugpy

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.