matlab debug出现k,MATLAB下的程序调试
文章主要內(nèi)容摘自《MATLAB 7.0從入門到精通》,求是科技編著。
程序錯誤一般分為兩種:語法錯誤和邏輯錯誤。對于語法錯誤通常MATLAB會報錯,并指出錯誤所在位置方便用戶糾正。對于邏輯錯誤,往往需要用戶對程序進行調(diào)試,發(fā)現(xiàn)錯誤原因和位置。MATLAB下的程序調(diào)試方法主要有直接調(diào)試法和工具調(diào)試法。
(1)直接調(diào)試法
1.通過分析后,將重點懷疑語句后的分號刪掉,將結(jié)果顯示出來,然后與預(yù)期值進行比較。
2.單步調(diào)試一個函數(shù)時,將第一行的函數(shù)聲明注釋掉,并定義輸入變量的值,然后以腳本方式運行此M文件,這樣就可保存下原來的中間變量了,可以對這些結(jié)果進行分析,找出錯誤。
3. 可以在適當(dāng)?shù)奈恢锰砑幼兞枯敵鲋档恼Z句。
4.在程序的適當(dāng)位置添加keyboard指令。當(dāng)MATLAB執(zhí)行到此處時將暫停,并顯示k>>提示符,用戶可以查看或改變各個工作空間中存放的變量,在提示符后鍵入return指令可以繼續(xù)執(zhí)行原文件。
(2)工具調(diào)試法
MATLAB的工具調(diào)試法主要包括以命令行為主的程序調(diào)試和以圖形界面為主的程序調(diào)試。
2.1 以命令行為主的程序調(diào)試
1. 設(shè)置斷點
dpstop in mfile
在文件名為mfile的M文件的第一個可執(zhí)行語句前設(shè)置斷點。
dbstop in mfile at lineno
在文件名為mfile的M文件的第lineno行設(shè)置斷點。
dpstop in mile at subfun
當(dāng)程序執(zhí)行到子函數(shù)subfun時,暫時停止文件的執(zhí)行并使MATLAB處于調(diào)試模式。
dbstop if error
M文件運行遇到錯誤時,終止M文件的運行并使得MATLAB處于調(diào)試狀態(tài)。不包括try…catch語句中檢測到的錯誤。
dbstop if all error
遇到任何類型的運行錯誤均停止運行并處于調(diào)試狀態(tài)
dbstop if warning
運行M文件遇到警告時,終止M文件的運行并使得MATLAB處于調(diào)試狀態(tài),運行將在產(chǎn)生警告的行停止,程序可恢復(fù)運行
dbstop if caught error
當(dāng)try…catch檢測到運行時間錯誤時,停止M文件的執(zhí)行,用戶可以恢復(fù)程序的運行
dbstop if naninf或dbstop ifinfnan
當(dāng)遇到無窮值或非數(shù)值時,終止M文件的執(zhí)行
2.清除斷點
dbclear all
dbclear all in mfile
dbclear in mfile
dbclear in mfile at lineno
dbclear in mfile at subfun
dbclear if error
dbclear if warning
dbclear if naninf
dbclear if infnan
3. 恢復(fù)執(zhí)行
dbcont
從斷點處恢復(fù)程序的執(zhí)行
4. 調(diào)用堆棧
dbstack
此命令顯示M文件名和斷點產(chǎn)生的行號,調(diào)用此M文件的名稱和行號等,知道最高級M文件函數(shù),即列出了函數(shù)調(diào)用的堆棧。
[ST, I]=dbstack
dbstack(N)
此命令省略顯示中的前N個幀
dbstack(‘-completenames’)
此命令輸出堆棧中的每個函數(shù)的全名,即函數(shù)文件的名稱和在堆棧中函數(shù)包含的關(guān)系
5. 列出所有斷點
dbstatus
此命令列出所有的斷點,包括錯誤、警告、nan和inf等
dbstatus mfile
此命令列出指定的M文件的所有斷點設(shè)置。
6. 執(zhí)行1行或多行語句
dbstep
執(zhí)行當(dāng)前M 文件下一個可執(zhí)行語句。
dbstep nlines
執(zhí)行下nlines 行可執(zhí)行語句。
dbstep in
當(dāng)執(zhí)行下一個可執(zhí)行語句時,如果其中包含對另外一個函數(shù)的調(diào)用,此命令將從被調(diào)用的函數(shù)文件的第一個可執(zhí)行語句執(zhí)行。
dbstep out
此命令將執(zhí)行函數(shù)剩余的部分,在離開函數(shù)時停止。
這4種形式的語句執(zhí)行完后,都返回調(diào)試模式,如果在執(zhí)行過程中遇到斷點,程序?qū)⒅兄埂?/p>
7. 列出文件內(nèi)容
dbtype mfile
列出mfile文件的內(nèi)容,并在每行語句前面加上標(biāo)號以方便使用者設(shè)定斷點。
dbtype mfile start:end
列出mfile文件中指定行號范圍的部分。在UNIX和VMS調(diào)試模式下,并不顯示MATLAB 的調(diào)試器,此時必須使用dbtype來顯示源程序代碼。
8. 切換工作空間
dbdown
遇到斷點時,將當(dāng)前工作空間切換到被調(diào)用的M文件的空間。
dbup
將當(dāng)前工作空間(斷點處)切換到調(diào)用M文件的工作空間。兩個命令常常配合使用。
9. 退出調(diào)試模式
dbquit
立即結(jié)束調(diào)試器并返回到基本工作空間,所有斷點仍有效。
2.2 以圖形界面為主的程序調(diào)試
新建一個M 文件,即可打開編譯器,選擇主菜單中“Debug”選項,打開下拉菜單,有
各種調(diào)試命令:
step
單步執(zhí)行,快捷鍵為F10,與調(diào)試命令中的dbstep相對應(yīng)。
step in
深入被調(diào)函數(shù),快捷鍵為F11,與調(diào)試命令中的dbstep in相對應(yīng)。
step out
跳出被調(diào)函數(shù),快捷鍵為Shift+F11,與調(diào)試命令中的dbstep out 相對應(yīng)。
run/continue
連續(xù)執(zhí)行,快捷鍵為F5,與調(diào)試命令中的dbcont 相對應(yīng)。
go until cursor
運行到鼠標(biāo)所在的行,與dbstop in mfile at lineno 相對應(yīng)。
set/clear breakpoint
設(shè)置或清除斷點,快捷鍵為F12,與dbstop 和dbclear 相對應(yīng)。
set/modify conditional breakpoint?
設(shè)置或者修改條件斷點,單擊此菜單項時,會彈出如圖4-5 所示的對話框,要求用戶對斷點的條件作出設(shè)置,設(shè)置前光標(biāo)在哪一行,則設(shè)置的斷點就在這一行前。
enable/disable breakpoint
允許或者禁止斷點的功用。
clear breakpoints in all files
清除所有斷點,與dbclear all 相對應(yīng)。
stop if errors/warnings
與dbstop if error、dbstop if all error、dbstop if warning、dbstop if caught error、dbstop if naninf
和dbstop if infnan 等命令等價。
exit debug mode
退出調(diào)試模式,與dbquit相對應(yīng)。
只有當(dāng)文件進入調(diào)試狀態(tài)時,上述命令才會全部處于使能態(tài)。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的matlab debug出现k,MATLAB下的程序调试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 维珍银河宣布将裁员 以专注于开发新一代太
- 下一篇: fopen rt wt matlab,f