Gibt es eine Möglichkeit, einen Teilprozess mit pydev zu debuggen?
Frage
Ich bin mit Eclipse / PyDev versucht, einen Weg zu Debug-Code zu finden, die subprocess.Popen
einen untergeordneten Prozess erstellen verwendet: Ich möchte das Kind Prozess in der Lage sein zu debuggen, das erstellt wird. Das Problem ist, dass ich nicht einen Weg zu debuggen accross Prozessgrenzen finden, und ich vermute, dass es eigentlich nicht möglich ist. Dennoch weiß man nie, bis Sie fragen, und so, dass ich tue!
Ein wenig Hintergrund: Ich habe einen Prozess komplexen Build angetrieben von Waf , die ruft unsere Unit-Tests durch den Aufruf aus href="http://somethingaboutorange.com/mrl/projects/nose/0.11.1/" rel="noreferrer"> Nase nach Bedarf Ich bin mir bewusst, der Remote-Debugging-Modus aber das ist ziemlich unbequem, weil ich manuell den Debugger in dem Remote-Prozess aufrufen. Wenn jemand einen Weg weiß, zu tun, was ich versuche, es zu tun wäre sehr willkommen.
Lösung
Andere Tipps
Ich habe etwas von einer Vermeidung des Problems gefunden, die für Sie arbeiten könnte.
Wie Sie, ich fand zuerst die Remote-Debugging-Option des manuellen Einfügen von Anrufen () an gewünschten Haltepunkte pydevd.settrace. Aber ich habe auch bemerkt, dass nachfolgende PyDev Haltepunkte (das heißt jene erstellt von am linken Rand klicken) befolgt wurden. So scheint es, dass Sie nur den ersten explizite settrace Aufruf müssen die Remote-Debug-Sitzung für den Prozess zu etablieren, und danach nur die normalen Debugger Haltepunkte verwenden.
Darüber hinaus können Sie den settrace Anruf ändern, so dass es nicht tatsächlich den Prozess auszusetzen:
import pydevd
pydevd.settrace(suspend=False)
So den obigen Code einfügen irgendwo früh in der Initialisierung des subprocess und Sie sollten gut sein. Immer noch ein bisschen wie ein Hack, aber es ist auf jeden Fall besser als die manuelle Methode.