Help us understand the problem. What is going on with this article?

Pythonでデバッグしたい

More than 1 year has passed since last update.

Pythonはエラー発生時にスタックトレースを表示してくれるのはいいのですが何分どこがいけないのかがよくわからない。

そこで、Pythonスクリプトでデバッグを行う方法をメモしておきます。

下記サイト様が非常に簡単にまとめてくださっていたのですが、デバッグ用語に関する細かい説明がなかったため、補足説明を加えさせていただきます。
http://racchai.hatenablog.com/entry/2016/05/30/070000

Pythonでのデバッグは、pdbモジュールを使用します。

使い方は簡単。怪しげな場所の直前に、下の一行を追加するだけ。

import pdb; pdb.set_trace()

この状態でスクリプトを実行すると、当該箇所で対話型デバッガが起動します。
あとはひたすらstepコマンドを打って一行ずつ実行していきます。(これをステップインといいます)
また、デバッグ中に変数の中身が見たい場合は、pコマンドを使用します。p hogeと打ち込むとhogeに格納されている値を確認することができます。

コマンド早見表

コマンド 説明 備考
s(tep) ステップイン(行単位で実行) 処理中に関数に入った場合は関数内でも1行ずつ停止する
n(ext) ステップオーバー(行単位で実行) 関数呼び出しも含めて1行を一気に実行する
r(eturn) ステップアウト(関数単位で実行) 実行時の関数が返るまで実行する
l(ist) 現在行前後のソースの表示
a(rgs) 現在いる関数の引数を表示
p 変数の値をチェック p hogeといった風に使う
c(ontinue) 次のブレークポイントまで実行

参考サイト

http://docs.python.jp/2/library/pdb.html
http://racchai.hatenablog.com/entry/2016/05/30/070000

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした