pythonでデバッグ。pdbを使ってみたまとめ。(さっくり編)
プログラムではよくprintデバッグが最強だと言われますが。。。
えぇ、おっしゃるとおりです(ちょっっwwww、はやくも敗北)
でも、それ以外のデバッグツールも便利ですよね
c言語ならgdb、Javascriptならfirebug などスタックトレースやステップ実行ができるのはやっぱり便利かと...
じゃあ、pythonではどうするの??
ってことで調べてみました。
結論から先に。。
pdbを使う。
以下、軽い使い方
% python -m pdb myscript.py arg1 arg2 > /home/kinoshita/pytmp/myscript.py(5)?() -> import (pdb) (Pdb) help /// ヘルプの表示 Documented commands (type help <topic>): ======================================== EOF break condition disable help list q step w a bt cont down ignore n quit tbreak whatis alias c continue enable j next r u where args cl d exit jump p return unalias b clear debug h l pp s up Miscellaneous help topics: ========================== exec pdb Undocumented commands: ====================== retval rv (Pdb) list /// プログラムの表示 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 5 -> import sys /// -> 現在の位置を表示 6 import os 7 8 print "hello world" 9 [EOF] (Pdb) continue /// プログラムの実行 hello world The program finished and will be restarted > /home/kinoshita/pytmp/myscript.py(5)?() -> import sys
ほかにも、こんなコマンドがあります。
alias | 変数などのエイリアスをつける | |
---|---|---|
args | 関数の引数表示 | |
break | ブレークポイントの表示と設置 | |
clear | ブレークポイントの削除 | |
condition | ブレークポイントの実行条件 | |
continue | プログラムの実行と再開 | |
disable | ブレークポイントの削除。clearと同じ | |
down | スタックトレースを戻す。See up | |
enable | ブレークポイントの設置。breakと同じ | |
! | 1文実行 | |
help | pdbのコマンドヘルプ。help |
|
ignore | ブレークの指定回数文だけ無効化 | |
list | ソースコード表示 | |
next | 次のステップまで実行 | |
p | 式を評価 | |
quit | デバッガ終了 | |
return | 関数リターンまで実行 | |
step | 関数を実行 | |
tbreak | breakと同じだが、実行後breakは削除される。 | |
unalias | エイリアスの削除 | |
up | スタックトレースを現状から1段あがる(新しいフレームへ)。downの逆 | |
whatis | 引数の型を表示 | |
where | スタックトレースの現在位置を表示 |
次回は、もうちょっとコマンドを試してみることにします。