官术网_书友最值得收藏!

  • C語言程序設計
  • 郭一晶 薛春艷主編
  • 2341字
  • 2019-10-14 11:41:59

1.2.3 C-Free環境下的程序調試

學會調試程序是編程學習過程中非常重要的內容。如何快速地定位問題和調試的思路在前面的內容已經有敘述,這里主要介紹在C-Free中的具體調試過程。程序在正常運行的情況下,運行速度非常快,程序員只能通過輸入和輸出推測運行的過程。在這種情況下,程序員往往只能看到出現問題的結果,很難發現程序出現問題的原因。而從工程應用的角度來分析,程序出現問題(Bug)的時候又需要程序員找到出現問題的原因并進行修改。在這種情況下就需要使用調試的功能,調試的本質就是讓程序運行的速度“慢下來”,并在程序員的控制下進行“慢速”運行。這樣程序員就可以觀察程序運行的過程和變量。在C-Free中調試的主要步驟有4個,具體內容和先后順序如下所述。

(1)設置程序暫停(中斷)的地方。該功能主要通過斷點的設置來實現。

(2)啟動調試模式。該功能讓程序開始運行,并暫停在程序運行到的第一個斷點處。

(3)根據實際需要,控制程序的慢速運行,用到的主要功能:單步進入、下一步、跳過、跳出、運行到光標處。

(4)查看程序運行到當前狀態的各個變量的值,并在第(3)步和第(4)步之間進行循環。如果不再進行調試則可以結束調試。查看各個變量的值用到主要功能:環境窗口、查看/修改、監視窗口、查看窗口等。

請讀者在多實踐的基礎上理解C-Free提供的調試功能,下面結合一個簡單的例子,詳細介紹C-Free的調試功能。

【例1-5】請結合例1-2的程序,進行調試功能的學習。

(1)根據例1-4的步驟,實現例1-2的代碼輸入。

(2)斷點的設置。設置斷點,最方便快捷的方法是將鼠標移到代碼區中某一條代碼的左邊裝訂區,然后單擊,看到紅色斷點即設置完成。圖1.19所示為在第7行和第15行處各設置了一個斷點。設置斷點,也可以先將光標點定位到想要設置的行,然后單擊工具欄上的“設置/取消斷點”按鈕,如圖1.20所示。對于已經設置斷點的行,對該行重復進行上面的設置斷點的操作,將取消斷點。

圖1.19 斷點設置示意圖

圖1.20 斷點設置工具欄圖

(3)斷點管理。單擊“調試”菜單,選擇“斷點管理”命令,彈出如圖1.21所示對話框。程序員可以對斷點進行簡單的管理。單擊“取消所有斷點”按鈕,取消所有設置的斷點。選中一個斷點,單擊“取消斷點”按鈕,則取消該選中斷點。選中一個斷點,單擊“查看”按鈕,則編輯區的光標跳到該斷點所在的行。

圖1.21 斷點管理設置

(4)條件斷點。條件斷點可以為斷點設置條件。斷點的條件是一個布爾表達式。當程序運行到條件斷點,這個條件表達式被測試,若它的值為true,程序停在這個斷點處;若值為false,程序繼續運行,并不在這個斷點停止。選中一個斷點,在“斷點條件”下面的編輯框輸入作為條件的布爾表達式,然后單擊“設置”就完成斷點條件的設置。條件斷點經常用在循環體里面的調試。圖1.22表示在第7行設置一個斷點,并設置斷點條件為“a==2”。當運行到這個斷點時,如果a的值為2則程序運行到此處會暫停在這個斷點,否則在不會暫停在這個點。

圖1.22 條件斷點設置圖

(5)開始調試。單擊“調試”菜單下的“開始調試”命令可以開始調試,如圖1.23所示。程序只有以“Debug”方式構建,才能夠被調試。一旦程序開始調試,C-Free會自動顯示“調試工具欄”,如圖1.24所示。

圖1.23 開始調試界面

圖1.24 調試工具欄

(6)退出調試。一旦程序處于調試狀態,可以單擊調試工具欄上的“結束調試”按鈕或“調試”菜單下的“結束調試”命令,程序退出調試狀態,回到編輯狀態,如圖1.25所示。

圖1.25 選擇“結束調試”命令

(7)單步進入。當程序處于調試狀態,并停在某個斷點處,如果該斷點處的語句是一條函數調用,單擊調試工具欄上的“單步進入”按鈕或“調試”菜單下的“單步進入”命令,程序將進入這個函數,可對這個函數進行調試。例如,對于本例題的程序,在第7行和15行設置斷點,然后開始調試程序,程序在第7行停止,如圖1.26所示。單擊“調試”菜單下的“單步進入”命令,程序進入max()函數,如圖1.27所示。

圖1.26 調試界面

圖1.27 進入函數調試界面

(8)當程序處于調試狀態,并停在某個斷點處時,單擊調試工具欄上的“跳過”按鈕或“調試”菜單下的“跳過”命令,程序執行到下一條語句。例如,對于圖1.26的程序狀態,單擊“跳過”按鈕,程序將在停在第8行,如圖1.28所示。

圖1.28 跳到斷點下一行語句

(9)跳出。當程序停在某個函數內部時,單擊調試工具欄上的“跳出”按鈕,程序運行至從這個函數返回。對于圖1.27的運行狀態,單擊“跳出”按鈕,程序將從max()函數處返回,回到主函數。

(10)運行到光標處。當程序處于調試狀態,并停在某個斷點處,將光標定位到某條語句處,然后單擊“運行到光標處”按鈕,程序將運行到光標所在行。

(11)環境窗口。當程序處于調試停止狀態時,環境窗口將顯示當前運行環境下,所有局部變量的值。例如,當程序暫停在第7行的調試狀態的時候,有3個局部變量和一個數組,環境窗口如圖1.29所示。

圖1.29 環境變量界面

(12)察看/修改。在環境窗口中右擊某一條局部變量信息,將彈出如圖1.30所示的菜單。選擇“察看/修改”命令,對于數組、結構或者類變量,將顯示“察看”窗口;對于其他變量,將顯示“修改”窗口。雙擊某一條局部變量信息,也可以實現同樣的功能。例如,對于圖1.29的局部變量,雙擊“myData”,由于myData是數組,因此將顯示“察看”窗口,如圖1.31所示。對于圖1.29的局部變量a,雙擊后將顯示“修改”窗口,如圖1.32所示。在“修改”窗口中,可以對變量進行修改。

圖1.30 察看/修改環境變量界面

圖1.31 環境數組變量察看界面

圖1.32 變量修改界面

(13)監視窗口。單擊“調試”菜單下的“開始調試”命令,打開如圖1.33所示的“監視”窗口。右擊“監視”窗口,彈出菜單,選擇“添加監視”命令,彈出如圖1.34所示的對話框。在文本框輸入需要觀察的表達式,就可以實時地觀察這個表達式。添加如圖1.34的監視后,監視窗口如圖1.35所示。

圖1.33 監視窗口

圖1.34 添加監視窗口

圖1.35 添加監視后的窗口

主站蜘蛛池模板: 罗城| 汾西县| 县级市| 思茅市| 林甸县| 平南县| 措美县| 清河县| 临汾市| 如皋市| 慈利县| 南投县| 丰原市| 晋宁县| 岳池县| 醴陵市| 乌兰察布市| 修武县| 台前县| 偏关县| 铜川市| 铜梁县| 衡山县| 苏尼特左旗| 遂川县| 高阳县| 甘孜| 永康市| 育儿| 四会市| 宣化县| 萍乡市| 双柏县| 龙岩市| 广宗县| 敦化市| 都江堰市| 海门市| 邹城市| 长葛市| 吉水县|