Skip to content

Instantly share code, notes, and snippets.

@tamago324
Last active September 17, 2020 15:51
Show Gist options
  • Select an option

  • Save tamago324/6ba8c8faa90b9c5dd19d25d1cf695f8c to your computer and use it in GitHub Desktop.

Select an option

Save tamago324/6ba8c8faa90b9c5dd19d25d1cf695f8c to your computer and use it in GitHub Desktop.
PythonでのデバッグのTips

PuDBを使ったデバッグ

Pythonの標準モジュールのpdbではなく、PuDBというツールを使ったデバッグもある

pipでインストール

$ pip3 install --user pudb

実行時にpudbで実行すればいい

$ pudb sample.py    # 通常は $ python sample.py

もしくは-mオプションをつけて実行する

$ python -m pudb sample.py

PipenvでPuDBを実行するにはどうすればいいの!?

pipでインストールではなく、pipenvでインストールすればできた

参考文献

pdbモジュールを使ったデバッグ

https://docs.python.jp/3/library/pdb.html

デバッグしたいスクリプトを実行するときに-m pdbを付けて実行するとデバッグモードで実行できる。

$ python3 -m pdb myscript.py

ソースの中に直接記述することもできる

...
import pdb; pdb.set_trace()
...

すると、記述した位置で止まり、デバッグモードになる

pdbの操作

pdbのデバッグモードにはたくさんのpdbコマンドがある。デバッグモードで、pdbコマンドではない文字列を入力すると、Pythonのコードとして認識される。 これは、変数の値を書き換えたり、関数を呼び出したりできるということ。
!を先頭につけることで明示的にPythonのコードにすることもできる。

まだやってないけど、使えそうなコマンド一覧

コマンド 説明
b(reak) ブレイクポイントの作成
tbreak 一時的なブレイクポイントの作成. 1度止まったら削除されるブレイクポイント. temp break point?
s(tep) ステップイン
n(ext) ステップアウト
r(eturn) 現在の関数が終わるまで処理を進める
c(ont(inue)) 次のブレイクポイントまで処理を進める
l(ist) 現在のファイルのソースコードを表示
a(rgs) 現在の関数の引数リストを表示
p 表示
q(uit) デバッガーを終了

参考文献

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment