debug it-python-hack-a-thon-2011.02
DESCRIPTION
Debugging with python for print debug user.TRANSCRIPT
DEBUG ITPython Hack-a-thon 2011.02
お前、誰よ?
村岡友介 (MURAOKA Yusuke)
@jbking
A zoper
フリーランス
デバッグしてますか?
with Python - Pythonを使って何かをデバッグパケットキャプチャ, リバースエンジニアリング, 組込インタラクティブシェル(manhole), ファンクショナルテスト(Selenium client driver)
for Python - Pythonのデバッグgdb, C拡張
on Python - Python上でのデバッグprint, pdb, django-debug-toolbar
デバッグって何よ?
with Python - Pythonを使って何かをデバッグパケットキャプチャ, リバースエンジニアリング, 組込インタラクティブシェル(manhole), ファンクショナルテスト(Selenium client driver)
for Python - Pythonのデバッグgdb, C拡張
on Python - Python上でのデバッグprint, pdbon Python - Python上でのデバッグprint, pdb, django-debug-toolbar
デバッグって何よ?
DEBUG ITPython Hack-a-thon 2011.02
Pythonの場合
再び質問デバッグしてますか?
print文(関数) フレームワーク提供デバッグツール pdb その他gdb
(脳内調べ)
今回の目標
print文(関数) pdb フレームワーク提供デバッグツール その他gdb
始めの一歩print文(関数)デバッグからpdbへ
PRINTの功罪
導入がめちゃくちゃ簡単
print(“x = %d” % x)
出力された値を見るだけしかできない
PDBを使いましょう
標準モジュール
導入がめちゃくちゃ簡単
python -mpdb demo.py
import pdb; pdb.set_trace()
実行コンテキスト上で処理を確認できる
デモ
次の一歩pdbからpudbへ
PDB SUCKS
一文字の変数を確認しようとするとコマンドと解釈されてしまう(cとかnとか)
!プレフィックス付けるとOK
何をやるにもコマンドうたなきゃいけない(lとかwとか)
PUDBを使いましょう
導入が簡単
easy_install pudb or pip install pudb
python -mpudb.run demo.py
import pudb; pudb.set_trace()
実行コンテキストを見ながら処理を確認できる
実行コンテキストのなかでシェルが使える
デモ
発展の話題
フレームワークも提供してる
django-debug-toolbar
Werkzeug built-in debugger
テストも頑張ろう
doctest
nose
pdb, pudb, doctestのサポート有り
継続ビルド(CI), バージョン管理(VCS), 環境分離(virtualenv, buildout)
いじょっ!
もっと使いやすいデバッグ環境あったら教えて :-)