
Hintergrund: Ich habe eine Python-Anwendung mit CLI. Ich möchte sie debuggen können, ohne die CLI der Hauptanwendung zu beeinträchtigen. Der Python-Debugger ermöglicht es Ihnen, einen alternativen Standard-Din/Standard-Out für den Debugger anzugeben.
Ich öffnete ein neues Fenster in tmux und notierte mir den Dateinamen des PTY (/dev/pts/47). Dann öffnete ich diese PTY-Datei zum Lesen und Schreiben in Python. Das schien in die richtige Richtung zu gehen. Das tmux-Fenster zeigte einige Ausgaben des Python-Debuggers und reagierte auf einige der Buchstaben, die ich eingab, aber nicht auf alle. Ich nehme an, das Problem liegt darin, dass Bash immer noch im PTY läuft und einige meiner Eingaben an Bash gehen, andere an Python, je nachdem, welches Programm zuerst aus dem PTY liest.
Gibt es eine Möglichkeit, mit tmux/screen/einer anderen Anwendung ein PTY zu erstellen, aber keine Shell zu starten, sodass eine andere Anwendung die Slave-Seite des PTY übernehmen kann? Ist das wahrscheinlich funktionstüchtig?
Gibt es eine andere, geeignetere Möglichkeit, ein Programm dazu zu bringen, eine zweite CLI-Schnittstelle zu öffnen?
(Alternativ habe ich versucht, mit mkfifo zwei benannte Pipes zu erstellen und dann cat >/tmp/pipe_stdin | cat </tmp/pipe_stdout
. Das hat funktioniert, war aber zeilengepuffert, sodass die Zeilenbearbeitung nicht funktioniert.)
Antwort1
Wenn ich Ihr Problem richtig verstehe (ich habe keine Erfahrung mit dem Debuggen von Python), scheint es auf den ersten Blick der einfachste Ansatz zu sein, zwei Shell-Fenster zu verwenden.
Führen Sie den Debugger (mit der zu debuggenden Anwendung) in einem davon aus und leiten Sie die Eingabe/Ausgabe des Debuggers auf das zweite Fenster um.
Sie können dann den Debugger steuern und seine Ausgabe in der zweiten Shell beobachten, ohne die Ausgabe in der ersten zu beeinträchtigen.