2011年8月24日 星期三

Free and Checked Build

WDK 提供兩種編譯環境, 編出 driver:

Free build (Retail build):
  • DBG 被定義為 0, 或是無定義.
  • 開啟編譯器最佳化
  • 執行快
Checked build (Debug build):
  • DBG 被定義為 1
  • 關閉編譯器最佳化
  • 這些 macro 有被定義, 可使用: ASSERT, ASSERTMSG, KdBreakPoint, KdBreakPointWithStatus, KdPrint, 及 KdPrintEx
  • 執行慢, 潛在的 timing 問題不易發現(race conditions, deadlocks)
在 checked build 時, race 或 deadlock 等 timing 問題不易被發現, 因此想要在發生時印出點訊息來看看, 卻也都看不到訊息, 這時我們就必須回到 free build, 利用 KeBugCheck 或 KeBugCheckEx 來引發 BSOD, 並丟出一些訊息, 雖然只能丟數字, 但也堪用.

沒有留言:

張貼留言