1. patekawa

    Posted

    patekawa
Changes in title
+Pythonでpdbを使ったデバッグ
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,88 @@
+# pdbを使ったPythonコードのデバッグ
+
+`import pdb`とか使えますが,ここではソースコードに変更を加えずにデバッグする方法を紹介します.
+よく使うコマンドだけを取り上げます.
+
+# 始め方
+
+```bash
+$ python -m pdb XXXXX.py
+```
+または
+
+```bash
+$ python3 -m pdb XXXXX.py
+```
+
+# 実行例
+
+## 実行するプログラムの例
+
+```Python:hello.py
+msg = "Hello world"
+
+def hello(txt):
+ print(txt)
+
+hello(msg)
+print("Done.")
+```
+
+- pdbの実行例
+
+```bash
+$ python3 -m pdb hello.py
+> /path/to/current/directory/hello.py(1)<module>()
+-> msg = "Hello world"
+(Pdb)
+```
+
+## pdbの使い方
+`(Pdb)`に続いてコマンドを入力することで,デバッグ作業を進めることができます.
+
+- よく使うコマンド
+
+| コマンド | 機能 |
+|:--|:--|
+| b(reak) [行数または関数名] | 行または関数にブレークポイントをうつ |
+| c(ont(inue)) | 次のブレークポイントに当たるまで実行 |
+| s(tep) | 現在の行を実行(関数呼び出しで止まる) |
+| n(ext) | 現在の行を実行(関数呼び出しであれば関数を実行) |
+| q(uit) | デバッガを終了 |
+
+コマンドで,かっこ内の文字は省略できます.
+
+## 実行例
+
+```bash
+$ python3 -m pdb hello.py
+> /path/to/current/directory/hello.py(1)<module>()
+-> msg = "Hello world"
+(Pdb) b 6
+Breakpoint 1 at /path/to/current/directory/hello.py:6
+(Pdb) c
+> /path/to/current/directory/hello.py(6)<module>()
+-> hello(msg)
+(Pdb) s
+--Call--
+> /path/to/current/directory/hello.py(3)hello()
+-> def hello(txt):
+(Pdb) s
+> /path/to/current/directory/hello.py(4)hello()
+-> print(txt)
+(Pdb) n
+Hello world
+--Return--
+> /path/to/current/directory/hello.py(4)hello()->None
+-> print(txt)
+(Pdb) c
+Done.
+The program finished and will be restarted
+> /path/to/current/directory/hello.py(1)<module>()
+-> msg = "Hello world"
+(Pdb) q
+$
+```
+
+# 参考
+http://docs.python.jp/3/library/pdb.html