標籤:
轉自:http://blog.163.com/hair_communication/blog/static/20198911920124145414945/
只是作者好像也是轉來的,原來出處好像是百度上的,現在已經不存在了。
Matlab的調試總體分為,直接調試和間接調試。
1.直接調試:
(1)去掉句末的分號;
(2)單獨調試一個函數:將第一行的函式宣告注釋掉,並定義輸入量,以指令碼方式執行 M 檔案;
(3)適當地方添加輸出變數值的語句;
(4)添加keyboard命令;
2.工具調試:
1.)以命令列為主的調試:
(1)設定斷點:
- dbstop in mfile:在檔案名稱為mfile的M檔案第一個可執行語句前設斷點;
- dbstop in mfile at lineno:在mfile的第lineno行設斷點;
- dbstop in mfile at subfun:當程式執行到子程式subfun時,暫時中止執行,並設斷點;
- dbstop if error:遇到錯誤時,終止M檔案運行,並停在錯誤行(不包括try...catch語句中檢測到的的錯誤,不能在錯誤後重新開始運行);
- dbstop if all error:遇到任何類型錯誤均停止(包括try...catch語句中檢測到的的錯誤);
- dbstop if warning:程式可恢複運行;
- dbstop if caught error:當try...catch檢測到已耗用時間錯誤是,停止M檔案執行,可恢複運行;
- dbstop if naninf 或 dbstop if infnan
- (2)斷點清除:
- dbclear all:清除所有M檔案中的所有斷點;
- dbclear all in mfile:清除檔案名稱為mfile的檔案中的所有斷點;
- dbclear in mfile:清除檔案名稱為mfile中第一個可執行語句前的斷點;
- dbclear in mfile at lineno:
- dbclear in mfile at subfun:
- dbclear if error/warning/naninf/infnan:
- (3)恢複運行:
- dbcount:從斷點處恢複程式的執行,直到下一個斷點或錯誤後返回Matlab基本工作空間;
- (4)呼叫堆疊:
- dbstack:
- 1.)dbstack(N)
- 2.)dbstack(‘-completenames‘)
- (5)列出所有斷點:
- dbstatus
- s=dbstatus:傳回值為M×1結構體
其中欄位:
name-函數名;
line-斷點行向量;
expression_r-與line中相對應的斷點條件表達字串;
cond-條件字串,如error,caught error,warning,或naninf;
identifier-當條件字串是error,caught error,warning,或naninf時,改欄位是Matlab的
資訊指示字串;
- dbstatus mfile:列車制定M檔案中所有斷點設定,mfile必須為M檔案函數或有效路徑;
(6)執行一行或多行語句:
- dbstep:執行下一個可執行語句;
- dbstep nlines:執行下nlines行可執行語句;
- dbstep in:執行下一行可執行語句,如有子函數,進入;
- dbstep out:執行函數剩餘部分,離開函數時停止;
- 註:這四種都返回偵錯模式,如遇斷點,中止;
- (7)列出檔案內容:
- dbtype mfile:列出mfile檔案的內容,並在每行語句前加上標號以方便使用者設定斷點;
- dbtype mfile start:end:列出mfile檔案中指定行號範圍的部分
- 註:在UNIX和VMS偵錯模式下,並不現實Matlab的調試器,此時必須使用dbtype來顯示來源程式代碼;
- (8)切換工作空間:
- dbdown:遇到斷點時,將當前工作空間切換到被調用的M檔案的空間;
- dbup:將當前工作空間切換到調用的M檔案的空間;
- (9)退出偵錯模式:
- dbquit;
- 1.1控制單步運行
step:單步,不進入函數
step in:單步,進入子函數單步
step out:在函數中的話跳出函數,否則直接跳入下個斷點處
save and run:儲存,運行
go until cursor:運行到游標處
可以看到,以上幾個按鈕和C編輯器中是基本一樣的意思
1.2斷點操作
- set/clear breakpoint:設定清除斷點
set/modify conditional breakpoint:設定或修改條件斷點,條件斷點可以使程式滿足一定條件時停止
enable/diable breakpoints:使斷點有效或無效
clear breakpoints in all files:清除所有斷點
stop if errors/warnings:程式出現錯誤或警告時停止運行,進入調試但不包括try...catch中的錯誤
切換工作空間,結束對程式的調試,開啟編輯視窗中的stack列表,選擇base,切換到主工作空間。記得要清楚掉斷點,紅色圓點去掉了,綠色箭頭(調試)變為白色,然後選擇continue,白色箭頭去掉,調試完成。
matlab遠端偵錯