Pythonのpdbモジュールでデバッグする

Djangoハッカソンのハンズオンでも好評だったPythonのpdb。
使い方はいろいろあるみたいだけど、とりあえず set_trace は便利なのですぐにでも使ってみるべき。

hello-pdb.py

def say_hello():
    msg = 'hello world'
    
    import pdb
    pdb.set_trace()

    print msg

if __name__ == '__main__':
    say_hello()

これで実行すると pdb.set_trace() でデバッグ用の対話シェルが実行される。

P:\Python\_sample\hello_pbd>python hello-pdb.py
> p:\python\_sample\hello_pbd\hello-pdb.py(7)say_hello()
-> print msg
(Pdb) msg
'hello world'
(Pdb) say_hello
<function say_hello at 0x00B01FB0>
(Pdb) n
hello world
--Return--
> p:\python\_sample\hello_pbd\hello-pdb.py(7)say_hello()->None
-> print msg
(Pdb)
--Return--
> p:\python\_sample\hello_pbd\hello-pdb.py(10)<module>()->None
-> say_hello()
(Pdb)

printデバッグよりは使いやすいかと。