iar調試


我們可以自己建立自己的工程了,但這一步只是開發中的第一小步。今天就來說說開發中舉足輕重的另外一件事:調試。

其實調試本身也並不難,樓主總結,調試關鍵在於兩件事,一是運行,二是觀察,為了更好的實現這兩者,就牽涉到如何設置斷點。

運行很簡單了,仔細觀察調試工具欄:

從左向右依次是:復位,暫停,步過,步入,步出,下一句,至光標,運行,退出調試模式。

運行是以指令指針為參照的,在環境中表現為綠色的小箭頭:

指令指針指向的該行,表示的是接下來准備要執行的代碼行。

復位:指令指針回到開頭,
暫停:使正在奔跑的程序立定
步過:執行當前這句話,如果這句話是函數調用,就把整個函數執行完,停在下一句
步入:執行當前這句話,如果這句話是函數調用,就進入到函數里,停在函數的第一句話
步出:一直執行到從當前的函數返回,停在函數返回后的下一句話
下一句:執行C語言的一條語句,停在下一句代碼上
至光標:一直運行到光標所在行,並停在這一行上
運行:運行到遇到斷點
退出調試模式:……額,就是退出調試模式


觀察,就是看——看什么?什么都看!

在菜單View中,我們可以了解都有哪些可以看,重點都在中間那一段中。


我們主要來看看重點中的重點,樓主比較常用的有以下這些:
Breakpoints:也就是斷點
Disassembly:反匯編,也就是你寫的程序經過編譯燒寫之后,在單片機中的樣子
Memory:內存,可以查看全部內存中的數據,看起來就像一般的16進制編輯器
Symbolic Memory:符號內存,不但能看到內存數據,還能看出來對應程序中的什么變量
Register:寄存器,查看全部寄存器的內容
Watch:觀察,可以根據你的需要,指定查看什么,根據樓主的經驗,查看全局變量方便一些,在變量可見范圍內,也可以查看局部變量和靜態變量(static)
Locals:查看函數局部(變量等)內容,包括函數的參數
Statics:查看靜態內存變量,注意不是指靜態變量(static),而是生命周期是整個程序生命期的變量,原則上不在堆棧中的局部變量,應該都是靜態內存變量。
auto:自動,指的不是C語言中的自動變量,而是指根據指令指針當前的位置,自動顯示出相關的變量
Call Stack:調用棧,表示到當前位置的函數調用順序圖
Stack:棧,就是棧的數據表示

除了上述這些,還有一些可以看的東西,由於樓主不常用,因此樓主也不是百分百的清楚它們的意義和用法,就不在這里胡說八道了。
總體來說即使只弄明白上述這些,在調試的時候也足夠了,絕對能讓你想看哪里,就看哪里。

最后是斷點,這個東西,可簡單可復雜。所以下面我們簡單來說說,便於大家好接受。

基本的斷點,通過下載調試按鈕旁邊的有着紅色圓的按鈕,就可以在光標當前行進行設置或者取消了,

當然你也可以直接點擊代碼左側的灰色區域,使斷點出現或者消失。

這是一個普通的位置斷點,在IAR中也被稱為代碼斷點,也就是當運行到這里的時候停下來。下圖是斷點窗格里看到的代碼斷點


設置好代碼斷點,讓程序運行,程序就會在運行到斷點的位置時自動暫停下來了。
以前經常有童鞋來問樓主,打了斷點為啥停不下來……很簡單,壓根沒跑到你設置斷點的地方唄!


在我使用的環境中,除了代碼斷點,還支持條件斷點和高級斷點的設置。

可能是由於樓主也不太會使用這個,只能設置到讀寫某個變量時暫停,我連單獨的讀或寫操作都無法指定,如下圖所示。


在用其他環境調試的時候,樓主也經常利用條件斷點來監視某個變量被修改成非法值的時機點,以此來跟蹤調查程序運行混亂的問題。

簡單總結一小下,調試時我們在做程序的時候,話費最多時間的階段,所以從學習IDE的使用開始上手,能有效提高我們調試的效率,把程序做得更大更好更穩定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM