寫程序避免不了調試,每種工具都有自己的代碼調試方式。但應作到規范的寫代碼,形成良好的代碼書寫習慣和風格,也能避免很多不必要的錯誤。應該先寫思路再寫代碼並賦予合理適量的注釋,盡量降低調試次數。以下說說delphi的調試方式。調試方式多樣,適用也不同,應該擇代碼使用合適的調試方式。打印調試信息時可以在conditional defines中填寫Debug,相對於c語言的 #define,這是對所有工程文件有效的。編譯器會把{$IFDEF DEBUG}...{$ENDIF}中的代碼編譯進二進制文件。如果只是在單個文件中使用就不需要在這里定義,直接在文件中定義即可,如:{$DEFINE MYDEBUG}。更詳細的編譯指令說明可以參考delphi的幫助文件。
1.彈出對話框
彈出對話框不失為一種簡單的調試方式,直觀,基本能做一些簡單的調試。彈出對話框作為提示倒是不錯的,但對於頻繁出的調試信息的是不合適的。
{$IFDEF DEBUG}
ShowMessage(sDebugMsg);
{$ENDIF}
2.寫日志文件
對於會產生大量調試信息的,而且bug是偶爾出現的,那么必須讓程序自己運行,如果人工不停的跟蹤必然效率低下,這事如果將bug產生時需要的信息寫入文件是一種不錯的方法,比如寫入文本文件。隨后根據文件寫入的bug來分析代碼即可達到目的。
{$IFDEF DEBUG}
AddDebugInfo(sMsg);
{$ENDIF}
3.使用斷點、watch, Evaluate(Ctrl+F7)
對於一些前期的調試,一般使用下斷點,建立監視點,斷點時查看某個變量的值。根據運行時數據來達到調試的要求。
4.使用DebugView
DebugView現在Sysinternals的一款工具,他可以顯示運行中的程序通過OutputDebugStringA(W)輸出的信息,當調試多線程程序時是比較有用處的。但必須要記得啟動dbgView.exe,否則是無法看到任何信息的。當然在delphi的ide中調試時這些信息會顯示在ide的event log中。
{$IFDEF DEBUG}
OutputDebugString(sMsg);
{$ENDIF}
5.使用WinDebug
WinDebug是微軟公司的一款調試工具,難於查找的疑難雜症才會用到它(個人這么認為),一般的調試不會用到它,使用它的調試成本並不低,而且需要投入時間去學習,所以比起ide中整合的調試環境來說更麻煩。但有些運行中應該程序突然崩潰,而且沒有什么規律,偶然性很高,這個時候你可能把代碼也分析了,但一時半刻看不出那段代碼出了問題,處於比較郁悶的狀態。如果你這時把他的dump寫磁盤或者通過在WinDebug在運行產生Dump文件,我們就可以通過在WinDebug中分析dump文件來縮小問題查找范圍,甚至能鎖定發生問題的代碼。WinDebug對查找一些疑難雜症還是比較方便的,當然WinDebug調試並不是那么容易的,有興趣可以到微軟官網下載工具及文檔研究學習。