2017-10-11 4 views
2

インタラクティブなデバッグ(python -m pdb foo.py)とハードコーディングされたブレークポイント(import pdb; pdb.set_trace())との違いは何ですか。 dubuggers上Pythonのデバッガ:対インタラクティブなデバッグハードコーディングされたブレークポイント

ほとんどのチュートリアルは、特定のコマンドの使用にfocuseが、理解することは興味深いものになるだろう:

  • は、デバッグモードを選択する際のベストプラクティスは何ですか?

  • の性能がで計算時間が異なりますか?

答えて

2

python -m pdb foo.pyは、プログラムの初めにデバッガにポップアップします。これは、あなたが全体として分析したい非常に小さなプログラムで役に立ちそうです。

はあなたが調査したい状況は背の高い関数呼び出しスタックの最上部に大きなcomputiation後に発生し、より大規模で複雑なプログラムでは、使用状況のこの種は非常に非現実的です。

このような場合、通常、ソースコード内で興味深い状況が発生した時点で、ハードブレークポイントをimport pdb; pdb.set_trace()に設定する方が簡単です。それから、プログラムを正常に起動します。通常は実行され、介入なしに多くの計算を実行するためにかなりの時間がかかっています。関心のあるポイントに到達したときだけ、デバッガは介入を依頼します。パフォーマンスに関しては

:最初のケースでは、注文事前に一人ひとりのステートメントをステップ実行する必要があります。 2番目の場合、デバッガは関心のポイントに達するまで呼び出されません。 firt場合

、CPUは、人間が応答するのを待っているほぼすべての時間を費やしているの。 2番目のプログラムでは、興味のあるポイントに達するまでプログラムの実行にほとんどの時間を費やします。

+0

それは '最初のケースでは、あなたはそれぞれの注文advance'内のすべてのステートメントをステップ実行する必要がありますために何を意味するのでしょうか?もし私が背の高い関数呼び出しスタックを持っていれば、pdbが非常に遅くなったことがわかりました。なぜですか?ありがとう@ジャック! –

関連する問題