有了它,我在bug面前一點(diǎn)也不慌~
時(shí)間:2021-09-13 13:59:16
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]大家好,我是bug菌!最近看到一個(gè)小伙子調(diào)bug,那簡(jiǎn)直是苦不堪言,斷點(diǎn)是打了無數(shù)個(gè),日志是打印了一大堆??上攵?,這樣調(diào)試bug的過程是痛苦的,特別是一些莫名其妙的bug。而更可惱的是,有時(shí)候項(xiàng)目、客戶、boss還要在旁邊催,估計(jì)大部分工程師都想一鼠標(biāo)鍵盤砸過去了……不過,非常...
大家好,我是bug菌!最近看到一個(gè)小伙子調(diào)bug,那簡(jiǎn)直是苦不堪言,斷點(diǎn)是打了無數(shù)個(gè),日志是打印了一大堆??上攵?,這樣調(diào)試bug的過程是痛苦的,特別是一些莫名其妙的bug。而更可惱的是,有時(shí)候項(xiàng)目、客戶、boss還要在旁邊催,估計(jì)大部分工程師都想一鼠標(biāo)鍵盤砸過去了……
不過,非常時(shí)刻還是要有非常手段,畢竟有些bug是毀滅性的,動(dòng)不動(dòng)一個(gè)小時(shí)損失幾W的場(chǎng)面那是多么可怕的。
我覺得解決bug主要是兩個(gè)方面:
1、解決bug過程的思路一定要清晰,不要全憑感覺,東打一槍,西轟一炮,調(diào)試過程要有步驟有依據(jù),更不要在代碼中注釋類似于"把這行代碼屏蔽就可以正常運(yùn)行這樣的注釋了~~"
2、理論知識(shí)要完備,包括問題的專業(yè)知識(shí)和高效的調(diào)試技巧知識(shí),對(duì)這一塊功能設(shè)計(jì)理解都不透徹怎么根除問題呢?
今天主要是跟大家介紹一下條件斷點(diǎn)(統(tǒng)稱,下面類似)如何使用,可以說有一半以上的軟件工程師很少、甚至沒有用過條件斷點(diǎn),這可是調(diào)試bug的神器,為何不好好利用起來呢?難道一定要一個(gè)個(gè)普通斷點(diǎn)的調(diào)試才更帶感嗎?
1Keil中的調(diào)試斷點(diǎn)
我們可以找到Debug調(diào)試中的Breakpoints選項(xiàng)進(jìn)入該工程中所有設(shè)置斷點(diǎn)的具體信息:
上圖展示了03和04兩個(gè)斷點(diǎn),分時(shí)標(biāo)注了用戶所設(shè)置斷點(diǎn)的位置。其實(shí)你完全可以把這種普通斷點(diǎn)看成是條件斷點(diǎn)的一種,其條件就是當(dāng)程序運(yùn)行到如上所設(shè)置的地址處就會(huì)終止運(yùn)行,只是說這樣的普通斷點(diǎn)可以直接在所編寫的程序中點(diǎn)擊設(shè)置。
然而面對(duì)更加復(fù)雜的條件斷點(diǎn),似乎Keil并不能為用戶更好的提供展示,也是就有了上圖的斷點(diǎn)設(shè)置對(duì)話框,但又擔(dān)心我們不知道怎么用,于是就有了一個(gè)help跳轉(zhuǎn)到幫助文檔供我們查閱。
可以說在help里面幾乎把每一項(xiàng)的功能都說得很清楚了,并且藍(lán)色部分可以點(diǎn)擊進(jìn)入進(jìn)一步詳細(xì)說明,所謂“授人以魚不如授人以漁”,bug就不啰嗦了,下面是help里面的實(shí)例,照著來即可~
不過,這里還是簡(jiǎn)單介紹一下Keil中為用戶提供了三類斷點(diǎn):
- 訪問斷點(diǎn)(A)
可以選擇指定內(nèi)存訪問窗口的大小(以字節(jié)為單位)或作為表達(dá)式的對(duì)象大小。對(duì)于此斷點(diǎn)類型,表達(dá)式必須解析為內(nèi)存地址和內(nèi)存類型,允許的操作符?(