質問

Eclipse / PyDevを使用して、 subprocess.Popen を使用して子プロセスを作成するコードをデバッグする方法を見つけようとしています。作成された子プロセスをデバッグできます。問題は、プロセスの境界を越えてデバッグする方法を見つけることができないことであり、実際には不可能であると推測しています。それでも、尋ねるまでわからないので、私はやっている!

少しの背景: Waf によって起動される複雑なビルドプロセスがあります。必要に応じて nose を呼び出してユニットテストを実行します。単体テストの失敗をデバッグするプロセス。私は鼻を直接実行しようとすることはできますが、問題はモジュールを正しくロードするために設定しなければならない環境がかなり複雑であり、それを避けることができるならそれを行うためにコードを複製したくないということです

リモートデバッグモードですが、リモートプロセスでデバッガを手動で呼び出す必要があるため、かなり不便です。誰かが私がやろうとしていることをする方法を知っているなら、それは大歓迎です。

役に立ちましたか?

解決

PyDevでできるとは思わない(PyDbgとWinDbgもできない)が、gdbでできるように見える: http://wiki.python.org/moin/DebuggingWithGdb

他のヒント

あなたに役立つかもしれない回避策を見つけました。

あなたと同じように、最初に、希望するブレークポイントでpydevd.settrace()への呼び出しを手動で挿入するリモートデバッグオプションを見つけました。しかし、その後のPyDevブレークポイント(つまり、左マージンをクリックして作成されたもの)が守られていることにも気付きました。したがって、プロセスのリモートデバッグセッションを確立するには、最初の明示的なsettrace呼び出しだけが必要で、その後は通常のデバッガブレークポイントを使用するだけのようです。

さらに、プロセスを実際に中断しないようにsettrace呼び出しを変更できます:

import pydevd
pydevd.settrace(suspend=False)

したがって、サブプロセスの初期化の早い段階で上記のコードを挿入してください。まだ少しのハックですが、手動の方法よりも間違いなく優れています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top