急いで乗車するPDBのデバッグガイドを説明するのに間に合わない.

2646 ワード

PDBとは
PDBフルネームPython Debuggerは、Pythonプログラムの公式ライブラリをデバッグします.
コードがあればバグがあり、デバッグバグはプログラマーの必須スキルです.工欲善其事必先利其器,幸いPythonは私たちに強大なPDBを提供してくれた.
では、PDBはいつ使いますか.は、単一の(単一の)デバッグの効率はあまり高くないことを教えてくれました.ログを印刷するのはもっと良い解決策かもしれません.ログを利用してデバッグした同僚が早く退勤したかもしれませんが、あなたはまだ黙って単一のデバッグをしていて、画面が感動しています.
また、一つの問題を解決する「典型的なステップ」の中で、「問題を分析して仮定する」ことが大きな比重を占めている.
PDBを誤った方法で使用している可能性があります
pdbデバッグを使用して、あなたはこのようにすることに慣れていますか?最初のステップでは、コードに次の文を追加します.
import pdb

......
pdb.set_trace()                                         #    
......

第2のステップでは、python $yourFile.pyを実行すると、プログラムは自動的にブレークポイントにとどまり、快適なデバッグを開始します.
しかし、このような効率は本当に低いです.まずあなたの断点は死んで、固定して、静的です;次に、コードファイルを修正しなければなりません.もしいつかファイルを元の状態に戻すのを忘れたら、直接生産環境に推し進めます.の
このやり方はよくない,甚だしきに至っては間違っている.
これは私たちが望んでいるものでもないし、pdbがあなたにあげたいものでもない.
必要なのは、ダイナミックに、好きなようにブレークポイントを注入し、ソースファイルを動かさないことです.
どちらが正しい道ですか.
PDBを使う正しい考え方についてお話しします.
最初のステップは、python -m pdb $yourFile.pyでファイルを直接実行し、pdbはファイルの最初の行に残ります.
第2歩は、好きなようにブレークポイントを注入します.pdbインタラクティブ環境でbreak $lineNumberを実行するだけで、実行するたびにブレークポイントが発生します.(breakすべてのブレークポイントを表示)
ステップ3、enable/disableブレークポイント.
  • disable $breakPointNumberこのブレークポイント
  • を一時的に禁止する.
  • enable $breakPointNumberこのブレークポイント
  • を有効にする
  • clear $breakPointNumberこのブレークポイント
  • を完全にクリアする.
    ステップ4で、ブレークポイントを実行します.
  • next単歩
  • step単歩歩きますが、関数呼び出しに遭遇すると
  • に陥ります.
  • untilサイクルから離脱
  • .
  • return呼び出された関数から
  • を離脱する.
  • list自分の位置を知らせる
  • quit今回のデバッグ
  • を直接終了する.
    第五歩、これで、好きなようにデバッグして、世界の善意を感じます.
    PDBの他の使い方を試してみる
    デバッグするときは、変数やオブジェクトの値を頻繁に表示する必要があります.
    もちろん、あなたはこのようにすることができます.
    (Pdb)  p $variable
    (Pdb)  pp $variable
    
    #          
    (Pdb)  !help $someInstance 
    #         __dict__
    (Pdb)  pp vars($someInstance)                         
    

    毎回こんなにたくさん入力して、回数が多くなって、どうしてもうんざりして、もっと良い方法がありますか?
    もちろん、答えはaliasです.
    (Pdb)  alias ph !help(%1)                              # %       
    (Pdb)  alias pv pp vars(%1)
    (Pdb)  alias                                           #      alias
    (Pdb) unalias $someAlias
    

    残念なことに、これは一時的なaliasしかありません.ただ、私たちが望んでいるわけではありません.
    この時.pdbrcが出場した.
    1. ~      .pdbrc       pdb   
    2.         .pdbrc           pdb   
    3.      .bashrc      
    
                  pdb   ,   ~             .pdbrc    ,       !
    

    まとめてみる
    pdbは実際には多くの強力な機能を提供していますが、私たちは利用しないか、正しく使用していないので、暗闇の中で前進し続け、知らず知らずのうちに多くのクラスを追加しました.