病みつきエンジニアブログ

機械学習、Python、Scala、JavaScript、などなど

Pythonでお手軽デバッグ

Pythonには pdb というデバッガーがついています。名前からてっきり gdb みたいな、化石みたいなインターフェースしか持ってないのかと思ったら、コード中に貼り付けて止めることもできるみたい(ちょうどrubydebugger みたいな)。

そのためには pdb.set_trace() というのを使う。

例えば、

summation = 0
for i in range(10):
    summation += i

みたいなコードがあったとして、ちゃんと足されているか調べるには、

summation = 0
for i in range(10):
    summation += i
    import pdb;pdb.set_trace()

そうすると、importの書いてある文で実行が止まります。変数の中を見るには、 gdbdebugger と似たような感じで、

(Pdb) p summation

とかやればよい(ちなみに h でヘルプ)。

pdbの代わりに使えるもの

もし色付きで補完の効くipythonライクなものがほしければ ipdb というものを使えばよい(pipが使えれば pip install ipdb で簡単にインストールできる)。

もしくは pudb を使うと、変数の中身やソースコードなど、いろいろと可視化されたものが使える。 noseとpudbを使ったテスト駆動開発 - SELECT * FROM life;