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

1.9 調試

編譯成功,只能說明程序沒有語法錯誤,但并不能說明程序沒有邏輯錯誤,要經過調試,不斷發現和排除邏輯錯誤,這樣才能使程序逐漸實現預期的功能。執行菜單命令“De-bug”→“Start/Stop Debug Session”,或按組合鍵“Ctrl+F5”,即可進入調試狀態。如果用的是評估版軟件,就會彈出如圖1-26所示的提示框,提示限制代碼大小為2KB,單擊“確定”按鈕,提示框消失,進入調試狀態。

圖1-26 評估版軟件提示框

進入調試狀態后的界面與編輯狀態相比有明顯的變化,“Debug”菜單項中原來不能用的命令現在已可以使用了,工具欄會多出一個用于運行和調試的工具條,如圖1-27所示。這些命令從左至右依次是“復位”、“運行”、“暫停”、“單步”、“過程單步”、“單步執行到函數外”、“運行到光標所在行”、“下一狀態”、“打開跟蹤”、“觀察跟蹤”、“反匯編窗口”、“觀察窗口”、“代碼作用范圍分析”、“1#串行窗口”、“內存窗口”、“性能分析窗口”、“邏輯分析窗口”、“符號窗口”和“工具按鈕”。

圖1-27 調試狀態下的工具條

調試程序就是執行程序,執行程序有多種方式,分為單步執行、過程單步執行、單步執行到函數外、運行到光標所在行和全速執行。單步執行是每按一下執行一個指令,若遇到函數(子程序),則跳入該函數,同樣一步一步執行函數里的語句;過程單步執行也是每按一下執行一個指令,若遇到函數(子程序),如匯編語言中的子程序或C語言中的函數,就將該函數(或子程序)作為一個語句來全速執行;單步執行到函數外是先完成當時所執行的函數,然后跳出該函數,返回主程序;運行到光標所在行這一條最有用,程序從當前PC所在位置,全速執行到光標所在行;全速執行是指一行程序執行完后馬上執行下一條,一直到執行完為止,中間不停止。一個程序只有全速執行能通過,才算調試通過。執行這些調試命令除了使用上述工具條外,還可以從“Debug”菜單中選擇,或者采用快捷鍵。總之,每一個命令都可以用3種方法實現。在調試狀態下,如果發現程序有錯,可以直接修改源程序,但是,要使修改后的代碼起作用,必須先退出調試環境,重新進行編譯、鏈接后,再次進入調試。

調試程序中有一個非常重要的調試手段,稱為斷點設置。斷點設置的方法有多種,常用的是在某一程序行設置斷點。設置好斷點后就可全速運行程序,程序一旦執行到該行就會停止,可在此觀察有關變量值,以確定問題所在。

執行菜單命令“Debug”→“Insert/Remove Breakpoint”,可以設置或刪除斷點(也可以用鼠標在該行雙擊實現同樣的功能);執行菜單命令“Debug”→“Enable/Disable Break-point”,可以開啟或暫停光標所在行的斷點;執行菜單命令“Debug”→“Disable All Break-point”,可以暫停所有的斷點;執行菜單命令“Debug”→“Kill All Breakpoint”,可以清除所有的斷點。

如圖1-28所示,程序斷點設置在第62行,當全速運行程序時,程序會在斷點處(第62行)停下來。因為程序任務是對單片機P0和P1的操作,使P0和P1的每一位輸出高/低的電平。打開外圍設備窗口(Peripherals),選擇I/O-Ports中的Port0和Port1,即P0和P1口。這時,會看到P0和P1口的每位輸出電位與程序設計要求是一致的。

圖1-28 調試狀態——程序在斷點處停下

至此,一個完整的工程項目建立、設置、編譯、調試的全過程已經完成。其中,曾提到一些功能快捷鍵的使用,在實際的開發應用中運用快捷鍵可以大大提高工作效率,建議用戶多使用。關于快捷鍵的更多、更詳細的介紹,請查看Keil軟件中的幫助文件。

主站蜘蛛池模板: 铁力市| 泸州市| 乌拉特后旗| 崇义县| 怀化市| 青神县| 普兰店市| 天祝| 伊通| 壤塘县| 大渡口区| 长顺县| 威远县| 绍兴市| 高阳县| 定边县| 汝南县| 来宾市| 德庆县| 定陶县| 五常市| 贵阳市| 连州市| 玛沁县| 罗山县| 宁晋县| 安达市| 桐柏县| 桃园市| 伊宁县| 姜堰市| 雅安市| 苗栗县| 左权县| 顺昌县| 百色市| 甘孜县| 安岳县| 巴中市| 遵义市| 错那县|