ipdb - Pythonデバッガ

Pythonにはpdbというデバッガが標準で備わっていますが、 ipdbは、そのpdbの拡張機能を提供します。

インストール

いつものようにpipでインストールします。:

(common)$ pip install ipdb
Downloading/unpacking ipdb
  Downloading ipdb-0.7.tar.gz
  Running setup.py egg_info for package ipdb

Downloading/unpacking ipython>=0.10 (from ipdb)
  Downloading ipython-1.0.0.tar.gz (8.7MB): 8.7MB downloaded
  Running setup.py egg_info for package ipython
    running egg_info

Installing collected packages: ipdb, ipython
  Running setup.py install for ipdb

    Installing ipdb script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
  Running setup.py install for ipython
    running install

    Installing ipcontroller script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
    Installing iptest script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
    Installing ipcluster script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
    Installing ipython script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
    Installing pycolor script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
    Installing iplogger script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
    Installing irunner script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
    Installing ipengine script to /Users/xxxxxx/ng/usr/virtualenv/common/bin
Successfully installed ipdb ipython
Cleaning up...

ipdb - Pythonデバッガ は IPython を使用しますので一緒に入りました。

使い方

デバッグを開始する

スクリプト内でデバッガをスタートさせたい場所に次のコードを配置します。:

import ipdb; ipdb.set_trace()

配置したらスクリプトを実行します。 このコードが実行されると次のように標準出力に表示され標準入力の入力待ちとなります。:

(common)$ python bootstrap.py
/Users/xxxxxx/ng/usr/virtualenv/common/lib/python2.7/site-packages/IPython/frontend.py:30: UserWarning: The top-level `frontend` package has been deprecated. All its subpackages have been moved to the top `IPython` level.
  warn("The top-level `frontend` package has been deprecated. "
> /Users/xxxxxx/ng/home/common/tmp/test-buildout/bootstrap.py(21)<module>()
     20 import ipdb; ipdb.set_trace()
---> 21 import os
     22 import shutil

ipdb>

矢印が示している箇所は次に実行されるコードです。

デバッガの使い方

ipdb> のプロンプトで入力待ちとなったら ipdb - Pythonデバッガ のコマンドで デバッガを操作可能です。 ipdb - Pythonデバッガ のコマンドといっても基本的には pdb と同じです。

最低次の5つを押さえておけば何とかなります。

n
次の行を実行する
s
次の行を実行するが、関数とかの呼び出しだったらその関数の中に入る
c
次のブレークポイントに当たるまで処理を進める
q
終了する
h
helpを表示する

むしろ h だけ覚えておけば何とかなります。 helpに大体のことが書かれているからです。

やり方がわからなければおもむろに h を押しましょう。

inserted by FC2 system