(27) Octaveでコマンドラインデバッグ

投稿者: | 2013/09/21

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

お腹いっぱいになりそうなので今日はここまでで終わろう。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です