5,147 views
この記事は最終更新から 1873日 が経過しています。
Octave ver.4.0ではGUI環境が提供されるとのことですが、現在開発レポジトリにある Octaveは GUI起動するもののデバッガは実装されておらず…(2013/09/21時点)
(14) Octave開発バージョンをインストール
そこでコマンドラインなデバッガを使ってみます。
Octaveのデバッガ使用手順は公式サイトのこちらのページに書かれています。
http://www.gnu.org/software/octave/doc/interpreter/Debugging.html#Debugging
以下のような簡単なスクリプト test.m を作り、デバッガで追ってみます。
1 function test() 2 a = rand(5); 3 b = ceil(a * 100); 4 c = size(a); 5 end
dbstop で2行目にブレイクポイントを設定します。
第1引数は関数名称、第2引数は行番号です。
octave:8> dbstop('test',2)
ans = 2
octave:9>
test.mを実行すると ブレイクポイントを設定した 2行目で実行が停止されます。
octave:10> test
stopped in /home/user/work/octave/test/20130921_debug/test.m at line 2
2: a = rand(5);
debug>
表示された行はまだ実行されていないため、この時点では変数 aは空っぽです。
debug> a
error: 'a' undefined near line 10 column 1
debug>
dbstep で 1行実行します。すると aには rand(5)の結果が格納されていることが確認できます。
debug> dbstep
stopped in /home/user/work/octave/test/20130921_debug/test.m at line 3
3: b = ceil(a * 100);
debug> a
a =
0.682724 0.103381 0.472552 0.250516 0.979150
0.470199 0.204337 0.224814 0.419812 0.598973
0.459502 0.831599 0.363254 0.403174 0.870916
0.637460 0.079009 0.193460 0.025521 0.394505
0.953280 0.589993 0.317156 0.365921 0.788757
debug>
設定されているブレイクポイントをリスト表示したい場合は dbstatusを使います。
引数に関数名称を指定した場合、その関数内のブレイクポイントのみを表示します。
debug> dbstatus
breakpoint in test at line(s) 2.
debug> dbstatus('test')
breakpoint in test at line(s) 2.
debug>
設定されているブレイクポイントを削除したい場合は dbclearを使います。
引数で「関数名称のみ」or「関数名称+行番号」を入力すると、指定したブレイクポイントのみを削除できます。
引数を指定しない場合は設定されている全ブレイクポイントが削除対象となります。
debug> dbclear debug> dbstatus debug>
デバッグモードから抜け出るには dbquitと入力すると Octaveのプロンプトに戻ります。
debug> dbquit octave:10>
今日覚えたデバッグコマンドは以下の5種類です。
dbstop
dbstep
dbstatus
dbclear
dbquit
お腹いっぱいになりそうなので今日はここまでで終わろう。