Python - デバッグ - デバッグする

クラウディア 
1. 概要
2. デバッグする
3. 変数に値を設定する
4. break point の指定

1. 参考サイト

 本ページは、下記のサイトを参考にさせていただきました。
27.3. pdb — Python デバッガ」
「pdb --- Python デバッガ」
「Python デバッグ Tips

2. デバッグする

 まぁ、ちょうどいい具合というか、悪い具合というか、ソース記述時に思うように動作しなかったので、デバッグすることにしました。  デバッガは以下のようにして起動します。

python -m pdb ソース名
 「n」で次のステップ、「q」で終了するあたりは、他のデバッガと同様です。  わたしが、よく使うコマンドをリストしておきます。
 コ マ ン ド  意  味 備  考
b(reak) 指定した場所(ファイル名や行番号を指定可)で停止
c(ont(inue)) ブレークポイントに出会うまで、実行を継続
cl(ear) ブレークのクリア(引数で行番号を指定) 行番号をいれないと全部消えちゃうらしい
l(ist) 実行中の行を表示
n(ext) 次のステップを実行
p(rint) 値の表示 print と打ってしまうと print 関数を実行するらしい
q(uit) 終了
restart プログラムを再実行します
u(p) [count] スタックフレーム内で現在のフレームを count レベル (デフォルトは 1) 古いフレーム方向に移動
w(here)) スタックの底にある最も新しいフレームと一緒にスタックトレースをプリントします
矢印 (>) はカレントフレームを指し、それがほとんどのコマンドのコンテキストを決定します

 コマンドのカッコ内((),[])は、省略可能であることを示します。

3. 変数に値を設定する


if verbose > 1:
 てな行がありまして。  「verbose」の値を見てみたら

(Pdb) p verbose
0
 となっておる。  ちょっと、「then」条件が見たくて、コマンドが、「gdb」に類似しているかと

(Pdb) p verbose=1
*** SyntaxError: invalid syntax
 わはは、怒られちゃいました。  単に

(Pdb) verbose=1
 でいいようです。

(Pdb) verbose=1
(Pdb) p verbose
1

4. break point の指定

 「break point」の指定は、下記の形式になります。

b(reak) [([filename:]lineno | function) [, condition]]
 「filename」は、実行時のパスと異なる場合、「パス/filename」で指定する必要があります。
ハイスピードプラン