「@pdb」コマンドは、捕捉されなかった例外が出た時に実行をpdbデバッガに渡せと指示するものです。 デフォルトではオフになっています。
先程のhello.pyは引数なしに実行するとエラーになります。
In [24]: @run ~/myscript/hello.py --------------------------------------------------------------------------- IndexError Traceback (most recent call last) /home/snakeman/myscript/hello.py -2 import sys -1 print "hello, %s!" % sys.argv[1] IndexError: list index out of range WARNING: Failure executing file: </home/snakeman/myscript/hello.py> In [25]:
「@pdb」を実行します。
In [25]: @pdb Automatic pdb calling has been turned ON
これでエラーが出ればpdbに渡されることになります。もう一回hello.pyを引数なしで実行します。
In [28]: @run ~/hello.py --------------------------------------------------------------------------- IndexError Traceback (most recent call last) /home/snakeman/myscript/hello.py -2 import sys -1 print "hello, %s!" % sys.argv[1] IndexError: list index out of range > /home/snakeman/myscript/hello.py(2)?() -> print "hello, %s!" % sys.argv[1] (Pdb)
pdbに渡されました。pdbの使い方についてはhttp://www.python.jp/Zope/articles/tips/を参照してください。 @pdbは呼び出す毎にON,OFFが切り替わります。「@pdb on」「@pdb off」とすれば 明示的にオン・オフを切替えることができます。
@runでスクリプトファイルを実行する場合、任意の場所に「1/0」を埋め込んで ゼロ割り例外エラーを出させてpdbに渡す、ということができます。