前幾天在網上看到一篇文章,一位老兄說他有一次調試程序,一個循環跟蹤到七十多趟(循環了七十多趟)才找到問題,累得他要死。
今天我調試自己的遞歸同樣遇到了這樣的問題,大概在反復調用自己n多次時出現了問題,可VC 只能一步步的來,怎么辦?我想了幾個辦法,可以解決這個“調試難”的問題。
(會用__DEBUG__宏的同志可以不看第一步)
1、在你要調試的函數的文件的適當位置加入宏:



所謂適當位置就是要打印訊息的地方,宏(巨集)當中一般都寫些類似printf的語句,把函數中的內容打印出來。然后再在這個文件頭上定義__DEBUG__宏。編譯運行,這時會打印出很多函數運行時的訊息,根據這些訊息一般就可以知道在循環或者是遞歸了多少次後出現了問題;
2、定義一個局部變量i作計數器,每次循環時i都++,遞歸需要把i定義成全局變量,同樣每次遞歸調用i都++;然后寫一句話:





其中的XXX就是循環/遞歸條用的次數,再在這個printf上設置斷點,看明白了吧~
這時啟動調試會自動停止在問題所在的循環趟數上,再一步步跟蹤,就好辦多了。
其實很多時候并不一定非要知道是循環/遞歸調用在多少趟使出的問題,只要你能定位問題的特征,就能很快的到達那里。比如我知道我的函數中有的int變量var1 ,我發現當var1 == 100時程序出問題了,那么我就在函數里加上





再在這里設上斷點就行了。