パスワードを忘れた? アカウント作成
695754 journal

Maxの日記: WingIDE light

日記 by Max

Zopeプロダクトのデバッグをしたくなったので、入れてみる。
とりあえず30日限定のトライアルでWingIDE Lightを試す。

WingIDE:
http://wingide.com/wingide

ライセンスはここから入手:
http://wingide.com/wingide/demo

ダウンロードはこちら:
http://wingide.com/support/downloads

Zopeサポートはこちら:
http://wingide.com/doc/zope

とりあえず、Zopeプロダクトのデバッグのために上記HowToから
QuickStartの通りにやってみるみる。
とりあえずリモートデバッギングのための構成を行う。
ローカルファイルとリモートファイルの間で、対象となるホスト
のファイルシステムをマウントできてなきゃいけないのだが、
その部分はWingIDEの関知範囲外となる。

[Edit]-[Preference file..]を開いて、
---------------
debug.passive-listen=true
debug.passive-hosts=('127.0.0.1', '#.#.#.#')
---------------
# '#.#.#.#'はターゲットホストのIPアドレス

を追加。つづいて、ローカルにあるファイル群と、ターゲットとなる
ホストのファイル群とのマッピングを設定する。

debug.location-map={ '127.0.0.1':None, \
'192.168.1.1':[('/home/myuser/Zope', 'file:e:/Zope')], }

ここで、/home/myuser/Zopeってのが、リモートサーバのディレクトリ。

これが、ローカルの"E:\Zope"というディレクトリにマップされるように
なってなきゃいけない。ターゲットは/var/zope/Productにプロダクトを
入れているのだが、本体は/usr/share/zopeに入っている。

# ローカルの"E:"ドライブのZopeにってことだけど、これってクライアント
# はWindowsを想定しているようだ。

対象となるプロダクトの入っているディレクトリをマウントするのか、
プロダクトのディレクトリをマウントするのかどうかちょっと謎。
http://wingide.com/psupport/wingide-1.1/node7.html
あたりに説明あり。NFSマウントか、Windowsホストの場合は共有
ディレクトリか。

Linuxホストをデバッグするので、ここ数年使ってなかった(ぉぃ
NFSサーバをホストに仕込むことになる。なんか、ファイアウオールの内側
にいて、外に接続を持っていないサーバでないと怖いけど。これを仕込む
サーバはとりあえず内部にしか見えてないのでセキュリティは最低限しか
考えない事にする。
とりあえずローカルネットからの接続のみ許容。uid=zope,gid=zopeに
マップすることで、/etc/exportsを設定。
-----------------
/var/zope/Products 192.168.**.**(rw,anonuid=**,anongid=**,sync)
-----------------
デバッガのあるクライアント側のfstabには
-----------------
192.168.**.**:/var/zope/Products /home/**/ide/products nfs rsize=8192,wsize=8192,timeo=14,intr
-----------------
とか記述する。で、ホスト側でnfs,portmapサービスを起動し、
nfsマウントができるか確認。

結局、WingIDEのpreferenceの設定に追加するのは
-----------------
debug.location-map={
    '127.0.0.1':None,
    '192.168.**.**':[('/var/zope/Products', 'file:/home/**/ide/products')],
}
-----------------
となる。それから、WingIDEのデバッガ側の/usr/lib/wingide-lite/wingdbstub.pyを
-----------------
-kWingHostPort = 'localhost:50005'
+kWingHostPort = '192.168.**.**:50005'
-----------------
のように書き直す。

ホストのZopeサーバのZMIを開き、ルートフォルダに"Wing Debugger"
を追加。"Wing home dir"ってのはどこを指定するのか・・・
デフォルトは/usr/lib/wingideとなっているが・・・
これは/usr/lib/wingide-liteになおすべし。

Wing IDE connection settingsのIDE Hostにはデバッガを動かしている
ホストのIPアドレスを書く。
Debug http request server settingsのHttp host/portには、デバッグ
対象となるリクエストを受けるIPアドレスとポートを書く。
これ以外のアクセスはデバッグ対象とならない。

続いて、WingIDE側のプロジェクトを新規作成。
ProjectメニューのPropertiesを開き、それぞれの項目を設定。

設定後、デバッガをZMIからスタートさせる。StatusタブのStart debugger
をクリックして起動。うまく行けば、クライアント側のWingIDEの左上に
Debugger program runningという赤い表示が出てくる。

とりあえずここまでで一時置く。
****
続いて、プロジェクトを作成。
デバッグ対象となるファイル群のあるディレクトリをProjectメニューの
Add directoryで選んで追加。
プロジェクトの上側のペインにディレクトリ一覧がツリー式に出る。
これをクリックして、適当なファイルをダブルクリック。
Pythonソースの適当な場所にブレークポイントを設定。
で、プロダクトを動かしてみる・・・おお。ちゃんと停まる。
が、プロダクトが何かの応答を返すようになっている場合、ブラウザは
タイムアウト喰らってしまう。これが仇になってしまうケースってない
んだろうかとか思いつつ・・・ま、とりあえず動いたからヨシとしよう。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...