第一節 軟件說明
Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。目前軟件對中文的支持不友好,不建議安裝網上的一些漢化包之類的。另外建立的工程文件路徑也盡量不要存在中文,否則可能會出現一些異常。
第二節 基本調試方法
1,基本調試操作:首先點擊"Debug->Start/Stop Debug Session"或下圖2位置,進入調試:
如果前面工程配置里選擇了復位調試,則進入調試后,會停在main函數頭部:
2,復位:對程序進行復位操作,根據燒錄器不同的復位方式配置會觸發不同的復位類型。
3,全速運行:使當前程序開始正常全速運行,直到程序遇到斷點時停止。
4,停止運行:當程序全速運行時,點擊此按鍵可停止程序運行,停的是當前點擊時的程序運行位置。
5,單步調試:根據當前調試的窗口的語言,執行單條語句。如果遇到函數,則會進入函數內部。如果是在反匯編窗口中,則只執行一條匯編指令。
6,單步跳過調試:如果是在C語言窗口中,則是按單條語句執行,與單步調試不同的是,遇到函數不會進入函數內部,而是直接全速運行函數,并跳到下一條語句。
7,單步返回調試:如果是在C語言窗口中,則是直接全速運行當前函數后面所有內容,直到函數返回上一級。
8,插入/移除斷點:如果當前光標所在行未有斷點,則插入斷點(前提是當前行可以插入,如果無法插入會顯示一個感嘆號),在有斷點的情況下則是移除斷點。插入斷點后,當前行前面會有個紅圓表示斷點位置。也可以通過直接點擊紅圓位置進行插入/移除斷點的操作。另一種斷點方式,是通過指令來控制,當然也可以使用Keil提供的界面化操作,設置某個變量讀或寫時觸發斷點。不過目前貌似有部分芯片不支持這種操作。注:斷點最多只能打7個。
9,使能/禁止斷點:開啟或禁止當前光標所在行的斷點。禁止后紅圓變成白圓。
10,禁止所有斷點:禁止當前所有的斷點。
11,刪除所有斷點:刪除所有斷點。
第三節 變量調試方法
通過"View->Watch Windows->Watch1、Watch2"可以選擇打開Watch窗口:
通過選中一個變量,右鍵添加入對應的Watch窗口,可以追蹤查看當前變量的變化狀態。注意,只有全局變量可以全程監視,臨時變量只有在進入當前函數中才可監視到其數據,用static關鍵詞修飾的變量無法監視。
如果當前變量沒有實時更新,則需要點擊"View->Periodic Window Update"將其勾選上。
在"Watch"窗口中,可以查看當前變量名稱、值、數據類型,如果當前變量類型為結構體,則可以以對應的結構形式進行展開查看。
第四節 內存調試方法
通過"View->Memory Windows->Memory1/2/3/4"打開Memory窗口:
這個圖標打開的狀態下,再次選中則可關閉:
在Memory窗口中輸入想要查看內存的起始地址,另外右上角的鎖可以把當前界面鎖定下來。
第五節 系統調試方法
通過"View->System Viewer"打開窗口,這個窗口用于查看當前單片機外設及內核寄存器的值,在調試外設底層時經常會使用到。在這個窗口中可以直接修改外設寄存器的值,當然部分只讀寄存器是無法修改的,有些則是需要在特定條件下才可以設置生效,具體就得看對應的芯片手冊里寄存器的說明了。
第六節 調度調試方法
可以在"View->Call Stack Window"打開此窗口:
這個窗口用于查看當前程序調度關系,當出現有進入硬件錯誤異常調試時可以快速定位到是哪里觸發的異常。這個窗口是的調度關系是從當前程序堆棧里獲取的數據并將其圖形化,所以如果當前堆棧數據被破壞,則此窗口也將無法查看調度關系。該窗口里顯示的調度關系是從下至上調用的,最上面的表示當前程序所處的函數。展開對應的函數,可以查看各層調用函數跳轉之前保存的一些臨時變量等信息。
第七節 寄存器調試方法
該窗口可在"View->Registers Window"處打開:
這個窗口用于查看當前內核的相關寄存器,如匯編里常說的15個通用寄存器。當然調試中比較常用的是其中的SP、LR、PC三個寄存器。SP為當前棧的地址位置,PC為當前程序地址,LR為函數跳轉前的地址,即當前函數返回的地址。
另外"Banked"中的MSP為當前程序系統主棧,PSP則為操作系統的任務棧,這兩者的區別是,如果使用了操作系統,則當前任務中的所有調度關系使用的是任務棧,而類似中斷這種內核的操作使用的是主棧;如果未使用操作系統,則只會使用主棧,不會使用任務棧。通過"Internal"可以查看當前是處在中斷還是任務中,Mode為"Thread"表示是在線程/任務中,或者是函數中(非中斷),為"Handle"表示是在中斷中;Privilege為"Privelege"表示當前處于特權模式。Stack為"PSP"表示當前使用的是任務棧,為"MSP"則表示使用的是主棧。
-
keil
+關注
關注
69文章
1214瀏覽量
167270 -
調試器
+關注
關注
1文章
306瀏覽量
23830 -
DEBUG
+關注
關注
3文章
94瀏覽量
19976
發布評論請先 登錄
相關推薦
評論