2

現在、Python インタラクティブ インタープリター セッションに参加しています。私は何かファンキーなことをしていることがわかっている関数を持っているので、デバッガー セッションでそれをステップスルーしたいと思います。関数のファイル名と行番号はわかっています。

その関数の先頭にブレークポイントを設定し、それを実行してステップスルーする方法はありますか? エディターを開かずに、ファイルを見つけ、関数を見つけ、手動で挿入import pdb; pdb.set_trace()し、ファイルを保存してから、インタープリターに戻り、関数の元のモジュールをリロードして実行しますか? 言うまでもなく、後で問題を引き起こす pdb トレースを削除するのを忘れた場合。

質問の要約:通常の Python インタープリター セッション (または iPython) を使用している場合、コードを実際にpdb.set_trace()どこかで編集しなくても、どこかにブレークポイントを設定してデバッグを開始することは可能ですか?

4

1 に答える 1

1

これを見逃したとは信じられませんが、pdb のドキュメントrun*をもう一度ちらりと見てみると、すべての関数がほぼ正確に機能していることに気付きました。特定の行をブレークポイントとして設定することはできませんが、使用する関数と引数を渡すことができ、関数の最初の行でブレークします。

import pdb
pdb.runcall(my_wonky_function, "arg1", "arg2", *myargs)

実際には、「EOF」と呼ばれる神秘的な場所で壊れました。

(Pdb) リスト
[終了]

関数の最初の行に到達する前に 2 回ステップしなければなりませんでしたが、それはほとんど問題ではありません。

于 2013-01-18T01:08:26.370 に答える