|
多半是:
程序中有死待某個標(biāo)記,用C寫的程序常有此問題(因為按正常邏輯及狀況,這個標(biāo)記一定會出現(xiàn),程序未考慮循特殊情況的出現(xiàn))。
比如:某個硬件在異常狀態(tài)下給不出標(biāo)記時,程序又死等它出現(xiàn)。
我一般比較注意有死等某個標(biāo)記地方,在死等的語句中插入時間限制(時間由中間程序控制,計時與死待無關(guān)),等不到標(biāo)記,但時間到了就跳出。
如何找到死等的點呢?
給程序運行加追蹤器:
比如:程序有10個步驟或任務(wù)或其它什么,用一個寄存器R_RUN,運行到任務(wù)1就讓R_RUN=1,運行到任務(wù)N就讓R_RUN=N。也就是說只要知道R_RUN的值就能知道程序運行到什么任務(wù)(地方)。
當(dāng)看門狗復(fù)位動作時,運行一個輸出R_RUN的程序(寫一個顯示程序或其它可以輸出的方式)
這樣你就知道,程序死在什么地方了。任務(wù)分得越細(xì)越易找到問題。 |
|