#freeze
[[FrontPage]]

#contents

2011/06/09からのアクセス回数 &counter;

** デバッガを使いたい [#c1ebbd77]
[[sage/PRML- ニューラルネットワークのスケール共役勾配法]]
のように長いスクリプトを作成するようになると、
どうしてもデバッガをほしいと思うことがあります。

できれば使い慣れた環境でデバッグしたいと思うのプログラマー
の常です。

** EclipseのPython用プラグインPydevを使う [#afab6cf4]
ここでは、[[python]]で紹介したPydevを使ってデバッグする方法
をお教えします(本邦初公開!)。

*** Python Interpretersの設定 [#kf3a1e72]
最初に、EclipseのPreferencesからPydev->Interpreter-Pythonを選択します。
以下のような画面になりますので、

&ref(Pydev_setting.png);

- Newボタンをクリックし、sage用のpythongの場所を指定します。
私の場合には、~/local/sage/local/bin/pythonをセットし、OKボタンを押す

これでPydevの設定は完了です。

*** Eclipse起動用のスクリプト [#n5987dd4]
Pydevでsageのスクリプトをデバッグするには、環境変数を整えた後、
Eclipseを起動する必要があります。

そのため、以下のようなスクリプトをsageのディレクトリに作成します。

MyStartEclipseForSage.sh
#pre{{
#!/bin/bash
export SAGE_ROOT=/Users/take/local/sage
. $SAGE_ROOT/local/bin/sage-env   1>/dev/null 2>/dev/null

/Users/take/local/eclipse3.4/Eclipse.app/Contents/MacOS/eclipse  1>/dev/null 2>/dev/null
}}
ここで、
- SAGE_ROOTにはsageをインストールしたディレクトリを指定
- 最後の行にeclipseの実行形式の場所を指定します。Eclipse.app以下はおきまりでContents/MacOS/eclipse

とします。

** デバッグ方法 [#of04667e]
*** デバッグ用スクリプトの修正 [#h004aed2]
デバッグするスクリプトは最初に、おまじないのfrom sage.all import *をつけます。
以下に[[sage/PRML-線形回帰]]の最初の行をテスト用に使用します。

#pre{{
from sage.all import *
data = matrix([
        [0.000000, 0.349486],
        [0.111111, 0.830839],
        [0.222222, 1.007332],
        [0.333333, 0.971507],
        [0.444444, 0.133066],
        [0.555556, 0.166823],
        [0.666667, -0.848307],
        [0.777778, -0.445686],
        [0.888889, -0.563567],
        [1.000000, 0.261502],
        ]);
X = data.column(0)
t = data.column(1)
M = 3;
var('x')
sin_plt = plot(sin(2*pi*x),[x, 0, 1], rgbcolor='green');
data_plt = list_plot(zip(X, t)); data_plt
(data_plt + sin_plt).show()
print t
}}

*** デバッグの設定 [#c79da563]
デバッグ方法は、普通のPydevのスクリプトと同じなのですが、
Pydevのデバッグ用設定で、Interpreterに先ほど追加したsage用のpythonを指定する必要
があります。

&ref(debug_config.png);

*** デバッグ時の画面 [#v2a27761]
Eclipseでデバッグしている場合には、グラフはプレビューで別ウィンドウに表示されます。
ブレークポイント、ステップ実行、変数の参照はEclipseのデバッガと同じです。

&ref(sage-debug.png);

これで、Sageでスクリプトを作成する障害はなくなりました。
どんどん挑戦してみてください。

** コメント [#qa17e449]
#vote(おもしろかった[1],そうでもない[0],わかりずらい[0])
#vote(おもしろかった[2],そうでもない[0],わかりずらい[0])

皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc