Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Process creation after debugging session not possible: teardown needed

Abierto
#2,014 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
70/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
python
Área
devtools

Línea de trabajo

Comienza en debugpy._vendored.pydevd.pydevd, en stoptrace(), e inspecciona cómo patch_new_process_functions() reemplaza _winapi.CreateProcess. Reproduce el problema con el ejemplo proporcionado de subprocess.Popen después del teardown y verifica después que la creación de procesos vuelva a funcionar tras el teardown sin reiniciar el programa.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Environment data

  • debugpy version: latest
  • OS and version: Windows 11
  • Python version 314 (but issue is not python-version related)
  • Using VS Code

Actual behavior

Connect to VSCode. Then apply

test = subprocess.Popen(
["C:\Python314\python.exe", "-c", "import sys; sys.exit(0)"],
creationflags=creationflags,
)
test.wait()
print(test.returncode)

this does not work because subprocess was patched. Also not after teardown of the debugging session:

from debugpy._vendored.pydevd.pydevd import stoptrace
stoptrace() to continue running the process. Now, subprocess.popen() does not work any more at al.
.... still subprocess.Popen will not work

Expected behavior

subprocess.Popen() should work

Steps to reproduce:

After debugging started, the following won't work. Make sure NOT to issue
debugpy.configure(subProcess=False) in order to reproduce this:

test = subprocess.Popen(
["C:\Python314\python.exe", "-c", "import sys; sys.exit(0)"],
creationflags=creationflags,
)
test.wait()
print(test.returncode)

SOLUTION
pydevd's patch_new_process_functions() patches _winapi.CreateProcess to intercept child process creation for subprocess debugging, but stoptrace() never unpatches it.

The effect is that you can't spawn processes after a debugging session is torn down and you want to resume your program without restart. The solution is a restoration on teardown:

from debugpy._vendored.pydevd.pydevd import stoptrace
stoptrace()
debugpy.server.api.listen.called = False # reset state so it can reconnect later
try:
	import _winapi as _subprocess
except ImportError:
	import _subprocess
if hasattr(_subprocess, 'original_CreateProcess'):
	_subprocess.CreateProcess = _subprocess.original_CreateProcess
	del _subprocess.original_CreateProcess		
Lenguaje dominante
Python
Estrellas
2.5k
Forks
202
Merge medio
5 d 1 h
PR fusionados (30 d)
1

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de microsoft/debugpy

Todos los issues de microsoft/debugpy

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.