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 メニューの FileAttach をクリックする。

    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