Python初心者はPdbを使ってデバッグしよう!!
pythonを勉強し始めましたが、今までずっとprint()でデバッグしていました。
が、コードが長くなってくると流石に面倒に感じてきたので、ネットで何か良い方法はないか調べていたところPdbという方法を見つけました。
なので今回はPdbの使い方を書いておこうと思います。
最初はとっつきにくいかもしれませんが、慣れれば非常に便利ですので、皆さんも是非使ってみてください。
【python】Pdbの使い方
import pdb; pdb.set_trace()
Pdbを使う際の流れを記述します。
コード内に「import pdb; pdb.set_trace()」を追加
↓
コマンドラインからファイルを実行
↓
コードの実行が途中で止まり、Pdbが起動する。
↓
コマンドを打ち込んでデバッグをする
という流れです。
今まではprintでデバッグしていたので、コードの実行→(エラー)→printの確認→再実行という面倒な流れでしたが、このPdbを使うと、途中で止まった段階で、すべての変数を確認することができるので、非常に便利です。
例えばfor文でprintをするとコマンドラインがグチャグチャになったりますが、Pdbだとそれがないですし、何回目の変数なのかもわかりやすいです。
たまに、if文でどっちの条件に分岐しているのかわかりにくい場合でも、Pdbであれば、次に実行されるコードを確認しながら進めることができるため、コードの条件分岐を追いやすいというメリットがあります。
Pdbでよく使うコマンド一覧
# 「h」 help h コマンド名でコマンドのhelpを表示
# 「w」 where スタックトレース(プログラムの実行過程の記録)を表示
# 「s」 step 現在行を実行し、次の行に進む。次の行が関数の場合、関数内で停止。
# 「n」 next 現在行を実行し、次の行に進む。次の行が関数であっても、関数内で停止しない。
# 「r」 return 現在の関数から抜ける
# 「l」 list 現在行周辺のソースを表示(なお、llコマンドで、より広範囲のソースを表示できる)
# 「a」 args 現在関数の引数一覧を表示
# 「p」 print p 変数名で、その変数の値を表示
# 「b」 break b 行数で、その指定行数にブレークポイントをつけることが出来る
# 「cl」 clear cl 番号で、指定した番号のブレークポイントを削除
# 「c」 continue ブレークポイント、あるいはpdb.set_trace()がある行まで実行を継続
# 「q」 quit デバッガを終了する。# 実行中のプログラムは中断される。
実際の画面
プログラムを実行すると、Pdbが記述されたところで止まります。
その状態ではコマンドラインには(Pdb)と表示されます。
ここにコマンドを打ち込むことでデバッグできます。
よく使うのは「p」コマンドで、p 変数名のように打ち込むことで変数の中身を確認することができます。その後nコマンドやcコマンドでプログラムを進め、変数の中身を随時確認しながら進めることができます。
非常に強力なデバッグツールなので、python初学者の方がいたら、是非マスターしてみてください。
以上です。
ありがとうございました。