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