読者です 読者をやめる 読者になる 読者になる

uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

pdbでデバッグするやつの補足

python

racchai.hatenablog.com

初心者向けのpdbの紹介記事を見かけたのでバット読んだけど、 このやり方も書いて欲しいなと思ってこのエントリを書いてみた。

#!/usr/bin/env python

import sys

def log(args):
    print args

def main(args):
    log(args)

#import pdb;pdb.set_trace()
main(sys.argv)

import pdb している行をコメントアウトしたスクリプトを用意しました。

% python2.7 -mpdb sample.py
> /private/tmp/sample.py(3)<module>()
-> import sys
(Pdb) b 12  # <= 12行目のmain()にブレイクポイントをセットします。
Breakpoint 1 at /private/tmp/sample.py:12
(Pdb) c     # <= ブレイクポイントまでスクリプトを実行します。
> /private/tmp/sample.py(12)<module>()
-> main(sys.argv)
(Pdb) l
  7
  8    def main(args):
  9        log(args)
 10
 11    #import pdb;pdb.set_trace()
 12 B->   main(sys.argv)

スクリプトの起動時に -m pdb で渡すメリットとしてはスクリプトを編集する必要がないところです。
本番環境などで改変が禁止されているスクリプトをどうしてもデバッグしたいときにはこの方法が有効です。

お粗末な内容ですが補足でした。