關於部落格
  • 117911

    累積人氣

  • 1

    今日人氣

    0

    訂閱人氣

程式除錯(Debug)

當程式可執行但是結果不對時方便除錯的工具

為了方便, 先對下面兩個變數做定義:

filename - M檔案名稱
N - 行數
 
  
[命令列指令, 外部指令] 
dbstop - 設定停止點.
方法:
dbstop filename N - 再第N行設定停止點
dbstop filename - 再第一行設定停止點

dbclear - 清除停止點.
方法:
dbclear filename N - 清除第N行停止點
dbclear filename - 清除所有停止點

dbstatus - 列出所有停止點.
方法:
dbstatus filename
 
  
[除錯模式指令, 內部指令] 
dbcont - 繼續執行程式.
dbstep - 執行下一步.
dbquit - 離開除錯模式.
 
  
[範例檔案] 
 
  
[範例] 
首先我們先下載好範例檔案 gauss2x.m 並開啟他, 會看到下方程式碼:
如果我們覺得第二行跟第四行有問題, 那我們便執行

>dbstop gauss2x 2

>dbstop gauss2x 4


也可以這樣一次完成

>dbstop gauss2x 2 4

然後用 dbstatus 來看看是不是真的再第二行設好了停止點.

>dbstatus gauss2x

結果訊息告訴你:gauss2x 的停止點(Breakpoint)設在第二行與第四行.

停止點設好了, 接著可以開始除錯. 我們來執行 gauss2x

你會在下方看到一個

debug>

字樣, 表示你已經進入除錯(Debug) 模式.

箭頭指的地方就是告訴你他目前停在檔案的第二行(line 2), 跟該行的程式碼(B=[1;2;3]).

到此因為第一行是 A 已經執行過, 所以你可以在 debut> 之後打上 A 來看到目前為止 A 的值.


然後鍵入

>dbcont

他會跳到下一個停止點, 也就是我們剛剛所設的第四行.

或是, 你想一步一步(step)看可以使用

>dbstep

他便執行下一步的指令.

下一步在第六行, 訊息也的確顯示第六行了!

最後當你看完時, 請輸入

> dbquit

來離開(quit)除錯模式

當下方命令列還原成原本的命令列時, 表示已經離開除錯模式.

最後為了要讓程式能正常執行, 必須清除(clear)所有停止點.

先用 dbstatus 看 gauss2x.m 上的所有停止點

然後我們執行

>dbclear gauss2x

來清除所有停止點, 然後在用 dbstatus 看一次

什麼訊息都沒有, 表示已經清除乾淨. 那我們再次執行一次程式看看吧!

清除過後程式就會照原本的樣子去執行, 不會進入除錯 debug 模式.
 
  
[See also] 
Octave 軟體簡介, 連結
Octave 指令用法, 連結
 

相簿設定
標籤設定
相簿狀態