スクリプトを書くことができますdbg.py
:
import pdb, warnings, sys
import __builtin__
if __name__ == '__main__':
args, n = [], len(sys.argv)
if n < 2:
sys.exit(1)
elif n > 2:
args.append(__builtin__.__dict__[sys.argv[2]])
if n > 3:
args.append(int(sys.argv[3]))
warnings.simplefilter('error', *args) # treat warnings as exceptions
try:
execfile(sys.argv[1])
except:
pdb.post_mortem(sys.exc_info()[-1])
その後、それを使用してスクリプトをそのようにデバッグできます。警告が発生した場合に pdb を実行する場合は、最初の引数としてスクリプト名を渡します。
$ python dbg.py yourscript.py
特定の種類の警告が発生したときにのみ pdb を実行する場合は、2 番目の引数として警告の種類を渡します。
$ python dbg.py yourscript.py DeprecationWarning
3 番目の引数としての行番号:
$ python dbg.py yourscript.py DeprecationWarning 342
warnings.filterwarnings
代わりにを使用してコードを書き直して、warnings.simplefilter
警告のフィルタリングをさらに柔軟にすることもできます。