2011年5月20日金曜日

web2py でデバッグツールを利用する ②

前回 に引き続いて、web2py で利用できるデバッグツールについて書きます。

Winpdb を使ったデバッグ

Winpdb は GUI のデバッグツールだ。Winpdb には rpdb2 というリモートデバッガが含まれており、Winpdb自体は rpdb2 のフロントエンドとして動作する。

インストール

Winpdb は GUIライブラリーを wxPython に依存している。このため Winpdb 及び wxPython をインストールする必要がある。
Winpdb のインストール
pip もしくは easy_install を利用してインストールできる。
pip install winpdb

easy_install winpdb
wxPython のインストール

wxPython のダウンロードサイト より、次の条件に合ったインストーラをダウンロードしてインストールする。
  • wxPython 2.6 以上
  • 開発マシンのOSに合ったもの
  • 使用する Python バージョンと一致するもの
  • unicode 版
使用手順

Winpdb でのデバック方法について順に説明する。
  1. デバッグ予定のプログラムソースに次のコードを追加する。
    import rpdb2
    rpdb2.start_embedded_debugger('password')
    
    password には適当なパスワード文字列(英数字)を設定する。

  2. デバッグ予定のソースを含んだプログラムを実行する。

  3. Winpdb を起動する。
    Windowsならコマンドラインから、winpdb と入力して Enterを押す。
    これは、Python フォルダーにある winpdb.bat を動かしているので、メニューに登録してから起動してもよい。

  4. Winpdb メニューの File → Attach をクリックする。

    Attach のウィンドウと一緒に Passwaord のウィンドウが開く。パスワードの項目に、先ほどソースに挿入したコードのパスワードを設定して OK を押す。


    するとパスワードが一致するプロセスが表示されるので、プロセスを選択して OK を押す。
    Winpdb にデバッグ情報が表示されるので、ブレークポイントの設定などをしてからデバッグする。

Windbgコマンドの簡単な説明

以下簡単にコマンドを説明する(複数の方法がある)。
ブレークポイント設定 ソース行番号の横をクリック(ブレークポイント設定行は赤くなる)
メニューソース上の設定したい行にカーソルを持っていき、
Breakpointos → Toggle (もしくは F9)
コンソールbp 行番号
ブレークポイント解除 ソースブレークポイントが設定されている行の行番号の横をクリック
メニューソース上の設定行にカーソルを持っていき、
Breakpointos → Toggle (もしくは F9)
Breakpointos → Clear All で全てのブレークポイントを解除
コンソールbc 行番号
ブレークポイント一覧コンソールbl
一行実行(Next) ツールバーNext
メニューControl → Next (もしくは F6)
コンソールnext
一行実行(Step-in) ツールバーStep into
メニューControl → Step into (もしくは F7)
コンソールstep
実行(Go) ツールバーGo
メニューControl → Go (もしくは F5)
コンソールgo
ツールバー

(注意)
Winpdb は web2py の pythonランタイム版では利用できない。

web2py のデバッグ用ツールとして、pdb, ipdb, Winpdb の3つをを紹介しました。web2py のデバック方法の説明というより、デバッガの説明になってしまいましたが・・・。
以上でデバッグツールの説明は終了します。

参考
winpdb.org
wxpython.org