10

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

少し背景:必要に応じてノーズを呼び出すことでユニットテストを呼び出すWafによって駆動される複雑なビルドプロセスがあります。これらのプロセスにフックして、ユニットテストの失敗をデバッグしたいと思います。noseを直接実行することはできますが、問題は、モジュールを正しくロードするために構成する必要のある環境がかなり複雑であり、回避できる場合はコードを複製したくないということです。

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

4

2 に答える 2

4

PyDevはそれを実行できないようです(PyDbgとWinDbgも実行できません)が、gdbは実行できるようです:http ://wiki.python.org/moin/DebuggingWithGdb 。

于 2009-10-27T14:43:46.570 に答える
3

私はあなたのために働くかもしれない回避策の何かを見つけました。

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

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

import pydevd
pydevd.settrace(suspend=False)

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

于 2010-10-08T15:44:25.237 に答える