2011-12-02 6 views
2

私は関数foo()を持つPythonプログラムを持っています。Python + PDB:PDB内から呼び出された関数でブレークポイントを停止する方法は?

プログラムをPDBで実行し、プログラム内の任意のブレークポイントで停止します。私はPDB内からのfoo()を呼び出すため

今、それは簡単です、私はちょうどタイプ:

!foo() 

そして、fooの実行を。それが終わるとすぐに、それはPDBに戻ってきます、そして、私はまだ私のプログラムが以前にあった元の行で待っています。

しかし今、私はPDBを fooの中でブレークポイントで停止させたいとしましょう。私はfoo()の最初の行にあるソースファイルにブレークポイントを設定し、!foo()を実行します。

しかし、PDBはブレークポイントで停止しません。プログラム内でfoo()が呼び出された場合にのみ停止するように見えますが、プログラムの実行中はPDBのコマンドラインからは呼び出されません。

これを回避する方法はありますか?私はPDBのドキュメントとGoogleを無駄に検索しました。

(なぜなら、私のプログラムは起動に必要なすべてのデータを読み込むのに1時間かかり、単純に1回のデバッグセッションでできるだけ多くのデバッグができる必要があるからですブレークポイントを追加してプログラムを再実行すると、対話的に関数を呼び出す柔軟性とその中でデバッグすることが非常に役に立ちます)

+0

リネーム番号がわかっている場合は、セッション中にブレークポイントを設定できます。私はあなたが複数のファイルの間に行っている場合に何をすべきかを知るには十分知識がありません...また、PDBがその機能を途中で実行している場合、それらのブレークポイントを尊重するほどスマートであるかどうかはわかりませんあなたのようなセッションは –

+0

ですPDBがそれを行うことができるかどうかはわかりません。とにかく、ある時点でプログラムがデバッグのためにfoo()を呼び出す準備ができていると思えば、その時点で呼び出すようにソースコードを修正し、問題をデバッグして、問題。 – jcollado

答えて

関連する問題