2016-12-24 6 views
0

私はデバッグをサポートするPythonエディターを作成しています。私は対話的にデバッグする必要があります IDEのような私のアプリケーションからpythonコードが、多くのオプションがありません。デバッグ対話的に別のプログラムのPythonコード

私はPDBでsubprocessのlibを使って何かをしようとしている

など、BDB知っているとpdbが、私は、ファイルに保存され、このスクリプトを実行し、オーバーステップのようなコマンドを送信し、引き続き、を終了する必要がありますしかし、私は良い結果を達成しませんでした。

これをPython 3.xで動作させる方法は?フォローするパスが必要ですが、外部依存関係のないPython 3を使うのが好ましいでしょう。

P.S.私はPyQt5を使用しています。 communicate上のサブプロセスのドキュメントから

答えて

0

:プロセスと

Popen.communicate(入力=なし)

インターアクト:STDINにデータを送信します。ファイルの終わりに達するまで、stdoutとstderrからデータを読み込みます。プロセスが終了するのを待ちます。オプションの入力引数は、子プロセスに送信する文字列である必要があります。子に送信するデータがない場合はNoneです。

したがって、communicateが呼び出されると、プロセスが終了するのを待ちます。プロセスが既に終了しているため、2回目に呼び出すことはできません。

おそらく、stdoutstderrから直接お読みください。これは別のスレッドで行う必要があります。または、データが利用可能かどうかを確認するためにしばらくポーリングする必要があります。各コマンドはpdbによって実行される時間が不明なので、いつ出力を準備するのか分かりません。あなたはプロセスstdinに書いてコマンドを送信します。

pexpectモジュールhereを調べることもできます。しかし、それはまだ良いWindowsのサポートを持っていません。

+0

答えにピーターセンさんに感謝します! –

関連する問題