1. 程式人生 > >WhyGoSoFar的專欄

WhyGoSoFar的專欄

一。在除錯時,逐步逐步的跟蹤有時並不能發現問題,通常是在以下兩種情況下:

1.多執行緒,兩個執行緒還好辦,,兩個以上就很難應付了。

2.訊息處理中,如果沒有在訊息處理中設定斷點,那麼程式就很難一步一步跟到那,例如WM_PAINT訊息,在裡面若有bug或者由OnPaint引發的其他地方的bug。這種情況下bug就很被發現。

以上兩種都屬於非同步執行中的錯誤,所以要特別注意這點,一般的bug找不出來,就要考慮這種非同步的狀況。

二。程式執行時,沒有介面生成,而是死在那裡,很有可能說明程式陷入了死迴圈,若逐步跟蹤還沒有發現錯誤,可能說明錯誤是有非同步執行過程中產生的,此時就要注意訊息處理函數了。

三。堆疊溢位。

有兩種情況可導致堆疊溢位,其一是程式中出現了死遞迴呼叫最常見的情況是函式自己呼叫自己了。其二是一個函式體中的變數過大佔用過多的棧空間導致溢位。