共用方式為


中斷進入偵錯工具

使用者模式和核心模式程式碼會使用不同的常式來中斷偵錯工具。

User-Mode中斷常式

中斷常式會導致目前進程發生例外狀況,讓呼叫執行緒可以發出與呼叫進程相關聯的偵錯工具訊號。

若要從使用者模式程式中斷偵錯工具,請使用 DebugBreak 函式。 其原型如下所示:

VOID DebugBreak(VOID);

當使用者模式程式呼叫 DebugBreak時,會發生下列可能的動作:

  1. 如果附加使用者模式偵錯工具,程式會中斷偵錯工具。 這表示程式將會暫停,而偵錯工具將會變成作用中。

  2. 如果未附加使用者模式偵錯工具,但在開機時已啟用核心模式偵錯,則整個電腦都會中斷核心偵錯工具。 如果未附加核心偵錯工具,電腦將會凍結並等候核心偵錯工具。

  3. 如果未附加使用者模式偵錯工具,且未啟用核心模式偵錯,程式將會以未處理的例外狀況終止,且後續程式 (即時) 偵錯工具啟動。 如需詳細資訊,請參閱 啟用事後偵錯

Kernel-Mode中斷常式

當核心模式程式中斷至偵錯工具時,整個作業系統會凍結,直到核心偵錯工具允許繼續執行為止。 如果沒有核心偵錯工具存在,則會將它視為錯誤檢查。

DbgBreakPoint常式可在核心模式程式碼中運作,但與其他DebugBreak使用者模式常式類似。

DbgBreakPointWithStatus常式也會造成中斷,但它也會額外將 32 位狀態碼傳送給偵錯工具。

在核取的組建環境中編譯時,KdBreakPoint 和 KdBreakPointWithStatus常式DbgBreakPointWithStatus相同。 在免費組建環境中編譯時,它們不會有任何作用。

Kernel-Mode條件式中斷常式

有兩個條件式中斷常式可用於核心模式程式碼。 這些常式會測試邏輯運算式。 如果運算式為 false,則執行會停止,且偵錯工具會變成作用中。

  • ASSERT宏會測試邏輯運算式。 如果運算式為 false,則執行會停止,且偵錯工具會變成作用中。 失敗的運算式及其在程式中的位置會顯示在偵錯工具中。

  • ASSERTMSG宏與ASSERT相同,不同之處在于它允許傳送額外的訊息給偵錯工具。

ASSERTASSERTMSG 只有在核取的組建環境中編譯時才會作用中。 在免費組建環境中編譯時,它們不會有任何作用。