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