Japanese subtitles

← 01ps-01 Build my-spyder

Get Embed Code
4 Languages

Showing Revision 2 created 06/24/2014 by Fran Ontanaya.

  1. このtraceit関数を使って
    自分の対話型デバッガを作成してください
  2. このスパイダーをmy-spyder
    つまり"自分のシンプルなPythonデバッガ"と名づけ
  3. すべてのバグを捕らえることができるものにしましょう
  4. 名前が示すようにmy-spyderは
    非常にシンプルなデバッガです
  5. my-spyderはコマンドラインのデバッガですので
    使用者がコマンドを入力します
  6. つまり"break 70"と"run"をコマンドとして入力すると
  7. プログラムの70行目で実行が停止します
  8. "print x"と入力しておけば変数xを出力し
    例えば変数xは42という値を持つことが分かります
  9. どのようにやるのでしょう?
    デバッガの機能を制御する多くの変数が必要です
  10. まず変数steppingを定義しましょう
    この変数でコードをラインごとに見ているかどうか
  11. または単にプログラムを実行しているのかどうかという
    状態を判断します
  12. 配列breakpointsもあります
  13. 各ラインから任意の値までのマッピングです
    このマッピングの7番目が指定されたとしましょう
  14. するとコードの7行目にデバッガが達した時に
    プログラムの実行が中断されることになります
  15. 私たちが行う設定ではもっとシンプルにしましょう
    ブレイクポイントをたくさん定義しておくのです
  16. 例えばコードの9行目と14行目に
    ブレイクポイントを設定しておくことができます
  17. traceit関数はラインごとに呼び出され
  18. ブレイクポイントでプログラムの実行を止めたり
    プログラムをラインごとに実行したりできます
  19. また必要に応じて
    グローバル変数にアクセスする必要があります
  20. 新たなラインに達した時は変数steppingの値を確認し
  21. 配列breakpointsの中に
    現在のラインが含まれているかをチェックします
  22. 配列に含まれている場合は
    診断した結果を適切に出力します
  23. 変数event、変数frame.f_linenoなど
    変数の出力はデバッグの際に役立ちます