日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式大雜燴
[導讀]對于程序員來說,debug的時間往往比寫程序的時間還要長。尤其對我這種專寫bug為主的程序員來說,正確使用斷點調試是提高效率的有效方法。今天我們聊聊如何高效率的斷點調試,由于工作中IAR為主力IDE,本篇文章主要以IAR為主。01普通斷點打開IDE,如下圖,我們想在程序運行到第1...

對于程序員來說,debug的時間往往比寫程序的時間還要長。尤其對我這種專寫bug為主的程序員來說,正確使用斷點調試是提高效率的有效方法。今天我們聊聊如何高效率的斷點調試,由于工作中IAR為主力IDE,本篇文章主要以IAR為主。


01普通斷點
打開IDE,如下圖,我們想在程序運行到第104行時停止運行,我們在下圖中104行號前單擊,這時該語句上將出現(xiàn)紅色的斷點標記。如下圖:



或者點擊要設置斷點的語句,按鼠標右鍵,選擇Toggle Breakpoint (Code)。


02條件斷點
除了上述最普通的斷點外,有時候我們需要斷點在一定條件下觸發(fā),例如上面的代碼,希望在num等于100時程序暫停。這個時候有兩個最常用方法:


1、最笨的方法就是手動運行100次即可,如果是一次兩次的還可以,運行100次顯然不現(xiàn)實。


2、寫一個判斷語句,當num等于100時執(zhí)行某個語句,把斷點打在這個語句上如下:



這種方法可行,也很缺陷:當代碼開了優(yōu)化時,某些語句可能被優(yōu)化導致斷點無法運行。


這個時候,條件斷點就閃亮登場了。


在打好斷點之后,進入debug模式,然后在IAREWARM的選項欄選擇View-> Breakpoints 窗口查看所設置的斷點,右鍵已設置的斷點,選擇Edit進行配置斷點。



我們希望當num等于100時暫停程序,那么我們下圖紅框內填寫num==100。當然也可以設置(num>= 10)和(num<= 10),類似C語言中使用的==、>=、<=。



程序全速運行時,當程序運行到104行,且num等于100時就會暫停,如下圖



注意我上面的用詞“且”,這時候斷點觸發(fā)的條件時運行到104行和num等于100同時滿足時,如果將斷點打到其他行也是一樣的效果,如下圖:



03數(shù)據斷點
看完上面的描述,有些同學就要問了,如果我就想要num等于100時暫停,不要同時滿足其他條件,為什么有這樣的需求呢?在實際的開發(fā)過程中,會碰到很多數(shù)據“異?!钡那闆r,比如在一個代碼量很大的工程中,有個變量突然變成1,卻無法很快定位到那句代碼修改的。


這時候數(shù)據斷點(非官方叫法,個人叫法)就閃亮登場了。值得注意的是,數(shù)據斷點只對全局變量有效。


進入debug模式,然后在IAREWARM的選項欄選擇View-> Breakpoints 窗口查看所設置的斷點,空白處右鍵選擇NewBreakpoint,然后選擇Data。



在1處填寫num,表示要監(jiān)控的變量,選擇2處Enable,在3處寫入0x00000064,表示當num等于100時,暫停程序。



測試結果如下



眼尖的同學可能已經注意到,Accesstype選項,我們這個選擇的是Read/Write,表示無論是讀操作還是寫操作,當num等于100時,都會暫停程序。


當選擇Read時,只有讀num等于100時才會暫停程序,當選擇Write時,只有寫num時num等于100,才會暫停程序


對比如下圖,一個停在了106行,一個停在了104行,具體原因這個是C語言的基本知識,這里不再贅述。



注意:


1、對于Cortex-M 設備,只能設置一個帶有匹配數(shù)據的斷點。而且這樣的斷點使用兩個硬件斷點。


2、調試設備僅限于I-jet,JTAGjet,J-Link/J-Trace 和ST-LINK,如果使用的自制的CMSIS-DAP是不支持的。


04總結
在新建斷點時,還有l(wèi)og,Datalog等等,這些我用得不多,上面主要介紹了我常用的打斷點的方式,希望對大家有幫助,原創(chuàng)分享不易,大家喜歡的話,點個在看,不想點在看,點個贊也可以。







本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉