4

関数 foo() を含む Python プログラムがあります。

PDB でプログラムを実行し、プログラム内の任意のブレークポイントで停止します。

これで、PDB 内から foo() を呼び出すのは簡単になりました。次のように入力するだけです。

!foo()

そして、フーが走ります。完了するとすぐに PDB に戻りますが、プログラムが以前あった元の行でまだ待機しています。

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

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

誰もこれを回避する方法を知っていますか? PDB ドキュメントと Google を検索しましたが、役に立ちませんでした。

(これを行う必要がある理由は、プログラムが起動するために必要なすべてのデータを読み取るのに 1 時間かかるためです。また、単にブレークポイントを追加して再起動するのではなく、1 回のデバッグ セッションでできるだけ多くのデバッグを実行できるようにする必要があるためです。 -プログラムを実行するため、対話的に関数を呼び出し、内部でデバッグできるという柔軟性は非常に役立ちます。)

4

1 に答える 1

1

Python デバッガー: 対話的に呼び出した関数にステップ インすることには答えがあります。PDB には、デバッガー内から関数呼び出しで再帰的なデバ​​ッグ セッションを開始できる 'debug' コマンドがあります。

于 2015-01-14T20:06:59.060 に答える