Support debugging of indirect child processes.
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
Commencez par examiner les points d’entrée mentionnés debugpy.server.cli.options, debugpy.server.api et debugpy.connect, puis comparez-les avec la prise en charge existante des processus enfants directs en multiprocessus. Définissez la limite officielle de l’API pour transmettre le contexte de session à travers des processus indirects non-Python ; le travail est considéré comme terminé lorsque l’arbre de workers multiniveau présenté peut se connecter sans dépendre de détails d’implémentation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
While debugpy natively supports multiprocess debugging, this works only for directly launched child processes.
Sometimes, though, there may be several levels on non-Python processes between the main process and the child one needs to debug. I am hitting this limitation while trying to debug a user-defined function, that runs in the context of a PySpark worker process. The process tree looks like this:
<python process hosting my main program>
└ <pyspark process>
└ <yet another pyspark process>
├ <python worker process hosting the UDFs>
├ <python worker process hosting the UDFs>
├ ...
└ <python worker process hosting the UDFs>
After spelunking the innards of debugpy for a few hours, I've managed to come up with this code:
import pickle
import os
import debugpy
def capture_session_context():
"""To be called in the main process to capture context of the current debugpy session."""
options = debugpy.server.cli.options
context = pickle.dumps((options.address, options.adapter_access_token, os.getpid()), 0)
os.environ["DEBUGPY_CONTEXT"] = context.decode('ascii')
def connect_to_session():
"""To be called in a worker process to connect to the parent session."""
context = os.environ['DEBUGPY_CONTEXT'].encode('ascii')
address, token, ppid = pickle.loads(context)
from debugpy.server import api
api.pydevd.SetupHolder.setup = {"ppid": ppid}
debugpy.connect(address, access_token=token)
Obviously, this hack uses a bunch of implementation details. It would be nice if this scenario was officially supported.
(I mean exposing official APIs similar to the above, not that debugpy should support PySperk specifically.
- Langage dominant
- Python
- Étoiles
- 2.5k
- Forks
- 208
- Merge moyen
- 1 j 43 min
- PR mergées (30 j)
- 6
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/debugpy
-
pydevd_comm.py start_client() does not set TCP_NODELAY on the connections it opensPeut-être pris @nightcityblade l’a pris il y a 61 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Document "rules"-optionPeut-être pris @nightcityblade l’a pris il y a 49 jours. Ouvertedocumentation
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
wx.EventLoop() deprecation warningPeut-être pris @nightcityblade l’a pris il y a 48 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
debugpy.configure(python=) is not properly documentedPeut-être pris @nightcityblade l’a pris il y a 59 jours. Ouvertedocumentation
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
Toutes les issues de microsoft/debugpy
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
jbacalso24/mimry#291 ·
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 2/5 Moins d'une heure Accessibilité débutants 82/100
eli-alvarado/us-watchlist-alerts#14 ·
Les mainteneurs répondent en général sous 1 jour
-
from-review-extraction python severity:nit
Difficulté 2/5 1-3 heures Accessibilité débutants 80/100
LearningCircuit/local-deep-research#7462 ·
Les mainteneurs répondent en général sous 2 jours
-
mermaid_extract.py silently discards single-line state-diagram notes; sequence notes are keptOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
cathrynlavery/diagram-design#441 ·
Les mainteneurs répondent en général sous 2 jours
-
[Cleanup] Include the public header in work_split.cppPeut-être pris @blozano-tt l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
tenstorrent/tt-metal#60850 ·
Les mainteneurs répondent en général sous 1 jour