急いで乗車するPDBのデバッグガイドを説明するのに間に合わない.
2646 ワード
PDBとは
PDBフルネームPython Debuggerは、Pythonプログラムの公式ライブラリをデバッグします.
コードがあればバグがあり、デバッグバグはプログラマーの必須スキルです.工欲善其事必先利其器,幸いPythonは私たちに強大なPDBを提供してくれた.
では、PDBはいつ使いますか.
また、一つの問題を解決する「典型的なステップ」の中で、「問題を分析して仮定する」ことが大きな比重を占めている.
PDBを誤った方法で使用している可能性があります
pdbデバッグを使用して、あなたはこのようにすることに慣れていますか?最初のステップでは、コードに次の文を追加します.
第2のステップでは、
しかし、このような効率は本当に低いです.まずあなたの断点は死んで、固定して、静的です;次に、コードファイルを修正しなければなりません.もしいつかファイルを元の状態に戻すのを忘れたら、直接生産環境に推し進めます.の
このやり方はよくない,甚だしきに至っては間違っている.
これは私たちが望んでいるものでもないし、pdbがあなたにあげたいものでもない.
必要なのは、ダイナミックに、好きなようにブレークポイントを注入し、ソースファイルを動かさないことです.
どちらが正しい道ですか.
PDBを使う正しい考え方についてお話しします.
最初のステップは、
第2歩は、好きなようにブレークポイントを注入します.pdbインタラクティブ環境で
ステップ3、enable/disableブレークポイント. を一時的に禁止する. を有効にする を完全にクリアする.
ステップ4で、ブレークポイントを実行します. に陥ります. . を離脱する. を直接終了する.
第五歩、これで、好きなようにデバッグして、世界の善意を感じます.
PDBの他の使い方を試してみる
デバッグするときは、変数やオブジェクトの値を頻繁に表示する必要があります.
もちろん、あなたはこのようにすることができます.
毎回こんなにたくさん入力して、回数が多くなって、どうしてもうんざりして、もっと良い方法がありますか?
もちろん、答えはaliasです.
残念なことに、これは一時的なaliasしかありません.ただ、私たちが望んでいるわけではありません.
この時
まとめてみる
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は実際には多くの強力な機能を提供していますが、私たちは利用しないか、正しく使用していないので、暗闇の中で前進し続け、知らず知らずのうちに多くのクラスを追加しました.