調(diào)試m文件--北太天元學(xué)習(xí)13
調(diào)試m文件--北太天元學(xué)習(xí)13
本節(jié),我們介紹確定m文件中錯誤的技術(shù)--調(diào)試。調(diào)試是定位和修正程序或代碼中錯誤的過程。
調(diào)試有助于修正運行時的錯誤, 這類錯誤通常很難追蹤,有時會產(chǎn)生意想不到的結(jié)果。
我們可以使用運行/調(diào)試菜單啟動調(diào)試M文件, 也可以在命令行窗口輸入命令
dbon 啟動調(diào)試。
調(diào)試分成下面幾個步驟:
1. 調(diào)試準備,
2. 設(shè)置斷點
3. 運行帶有斷點的m文件
4. 逐步執(zhí)行m文件
5. 檢查工作區(qū)的變量的值
6. 修正bug
7. 結(jié)束調(diào)試
1 調(diào)試準備
?? ?我將演示如何通過鼠標點擊菜單 運行/調(diào)試 來啟動調(diào)試。另外,也可以在命令行窗口輸入 dbon 啟動調(diào)試,此時命令行窗口變成
K>>
2 設(shè)置斷點
有兩種方式設(shè)置斷點,一種方法是用鼠標點擊,第二種方法是在命令行輸入設(shè)置
斷點的命令dbstop。 我將通過配套的視頻給大家演示。

設(shè)置斷點以暫停函數(shù)的執(zhí)行,這樣我們就可以檢查問題所在
3 帶斷點運行
? 程序執(zhí)行時,黃色的箭頭停在顯示暫停的藍色小圈上,這意味著該行將被執(zhí)行。
? 此時,我們可以檢查變量、逐步執(zhí)行程序以及執(zhí)行命令調(diào)用別的功能。例如,我們看到工作區(qū)中有一個變量 x = 0.5, 我們想看看 sign(x) 是否返回了正確的符號,我們可以在命令行窗口輸入
K>> sign(x) .

啟動調(diào)試一個m函數(shù),由于需要輸入m函數(shù)的輸入?yún)?shù),因此,不要使用圖形界面的按鈕或者菜單來啟動調(diào)試,而是使用
>> dbon
>> 函數(shù)名(輸入?yún)?shù)列表)
我給出一個例如, 例如北太天元學(xué)習(xí)12中的m函數(shù) bisectionEx2, 我們可以在設(shè)置斷點后,通過輸入下圖中的命令來啟動調(diào)試:

4 檢查值
?? ?當程序暫停時,我們可以查看當前工作空間。當我們想查看一行代碼是否產(chǎn)生是否
?? ?為預(yù)期結(jié)果。如果結(jié)果如預(yù)期,請轉(zhuǎn)到下一行,然后繼續(xù)運行,如果結(jié)果不符合預(yù)期,
?? ?則該行或前一行包含錯誤。當我們運行程序時,當前工作空間的變量在北太天元圖形界面的
?? ?右側(cè)窗口給出。在命令行窗口使用who 或者whos 也可以列出當前工作空間中的變量。
?? ?在編輯窗,當我們將光標定位在該行上一個變量的上方時, 一個窗口將彈出顯示該變量的
?? ?當前值。這被稱為數(shù)據(jù)提示。
5 糾正和結(jié)束調(diào)試
?? ?調(diào)試時,我們可以更改變量的值,看看新值是否產(chǎn)生預(yù)期結(jié)果。改變值的方法是在工作區(qū)中
?? ?點擊該要修改的變量名,然后輸入新的值。也可以在命令行窗口為該變量賦值。 然后繼續(xù)
?? ?dbcontinue或者dbnext.
6 結(jié)束調(diào)試
? 確定問題后,結(jié)束調(diào)試會話。在命令行窗口使用 dboff 退出調(diào)試模式,用鼠標退出
?調(diào)試的方法,我將在視頻里演示。如果要編輯m文件,最好在先退出調(diào)試模式, 否則,
?運行文件時可能會得到意想不到的結(jié)果。
7 修改m文件
?? ?當北太天元處于調(diào)試模式時,不要更改m文件。
?? ?為了修正m文件中的bug,我們首先退出調(diào)試模式(命令行輸入 dboff),
? 然后保存M文件。在命令行礦口輸入 dbclear 清除所有斷點, 然后再次運行m文件,
?? ?以確保其產(chǎn)生預(yù)期結(jié)果。