
今回はpdbについて。
Pythonソースをデバッグするには、pdbモジュールを使えばよいようです。
(Cのgdbと同じような感じですね)
■ pdbモジュール
まずは今回テストする関数を作成。
pdb_test.py に add_two_nums (2つの変数の和を返す) 関数を作成。
def add_two_nums(a, b):
breakpoint()
c = a + b
return c
n = add_two_nums(2, 5)
print(n)
テストする関数に breakpoint() を追加。
これで実行すれば自動的にデバッグモードに入ります。
coublood@penguin:~/python$ python3 pdb_test.py
> /home/coublood/python/pdb_test.py(3)add_two_nums()
-> c = a + b
(Pdb)
何が使えるかは「h」(help) を実行することでどんなコマンドがあるかは確認可能。
(Pdb) h
Documented commands (type help <topic>):
========================================
EOF c d h list q rv undisplay
a cl debug help ll quit s unt
alias clear disable ignore longlist r source until
args commands display interact n restart step up
b condition down j next return tbreak w
break cont enable jump p retval u whatis
bt continue exit l pp run unalias where
Miscellaneous help topics:
==========================
exec pdb
…とはいえ、何を実行していいかはわからないので、それはマニュアル等で確認が必要です。
coublood@penguin:~/python$ python3 pdb_test.py
> /home/coublood/python/pdb_test.py(3)add_two_nums()
-> c = a + b
(Pdb) w
/home/coublood/python/pdb_test.py(6)<module>()
-> n = add_two_nums(2, 5)
> /home/coublood/python/pdb_test.py(3)add_two_nums()
-> c = a + b
(Pdb) pp a
2
(Pdb) pp b
5
(Pdb) pp c
*** NameError: name 'c' is not defined
(Pdb) n
> /home/coublood/python/pdb_test.py(4)add_two_nums()
-> return c
(Pdb) pp c
7
(Pdb) c
7
コマンドを覚えておけば、色々と確認するのもある程度容易になるので、覚えておくと便利ですね。