共用方式為


診斷服務

MFC 程式庫提供可偵錯程式更容易許多診斷服務。 這些診斷服務包括在執行階段期間,在執行階段,讓您追蹤程式的記憶體配置,傾印物件內容,並列印偵錯訊息的巨集和全域函式。 巨集和全域函式診斷服務的群組可分類如下:

  • 一般診斷巨集

  • 一般診斷函式和變數

  • 物件診斷函式

這些巨集和函式為從 CObject 衍生的所有類別具有 MFC 偵錯版本和發行版本。 不過,所有除了 DEBUG_NEWVERIFY 不會在發行版本。

在偵錯程式庫中,所有配置的記憶體區塊會以一系列「保護位元組」。如果這些位元組而迷失記憶體寫入呼叫了,則診斷常式可以報告問題。 如果包含行:

#define new DEBUG_NEW

在您的實作檔,對 new 的所有呼叫都會儲存檔案名稱和行號記憶體配置發生問題的位置。 CMemoryState::DumpAllObjectsSince 函式會顯示這項資訊,可讓您識別記憶體遺漏。 也會參考類別 CDumpContext 有關診斷輸出的詳細資訊。

此外, C 執行階段程式庫也支援您使用偵錯應用程式的一組診斷功能。 如需詳細資訊,請參閱執行階段程式庫參考中的除錯程序

MFC一般診斷巨集

ASSERT

列印訊息再中止程式,如果指定的運算式評估為在程式庫的偵錯版本的 FALSE

ASSERT_KINDOF

測試物件是指定之類別的物件從指定的類別衍生自或的類別。

ASSERT_VALID

藉由呼叫它的 AssertValid 成員函式會測試物件的內部有效性;通常會覆寫 CObject

DEBUG_NEW

提供檔名和行號所有物件配置的在偵錯模式協助尋找記憶體遺漏。

DEBUG_ONLY

類似於 ASSERT ,但是不會測試運算式的值;對於在偵錯模式只應該執行的程式碼。

TRACE

提供在程式庫的偵錯版本的 printf相同的功能。

VERIFY

類似於 ASSERT ,但是評估運算式在程式庫的發行版本以及在偵錯版本。

MFC 一般診斷函式和變數

afxDump

CDumpContext 傳送資訊到偵錯工具的全域變數輸出視窗或到偵錯 Terminal Ready。

afxMemDF

控制偵錯記憶體配置器行為的全域變數。

AfxCheckError

用於的全域變數測試成功 SCODE 看它是否為錯誤,因此,如果是,則會擲回適當的錯誤。

AfxCheckMemory

目前檢查所有的完整性配置記憶體。

AfxDump

如果呼叫,以便在偵錯工具,傾印物件的狀態,在偵錯時。

AfxDumpStack

產生目前堆疊上的影像。 這個函式是靜態的只能連接。

AfxEnableMemoryLeakDump

啟用記憶體遺漏傾印。

AfxEnableMemoryTracking

開啟和關閉追蹤記憶體。

AfxIsMemoryBlock

確認適當配置記憶體區塊。

AfxIsValidAddress

確認記憶體位址範圍在程式的範圍內。

AfxIsValidString

判斷字串的指標是否有效。

AfxSetAllocHook

啟用會在每次記憶體配置的函式。

MFC 物件診斷函式

AfxDoForAllClasses

執行所有 CObject的指定函式-支援執行階段型別檢查的衍生類別。

AfxDoForAllObjects

執行所有 CObject的指定函式-配置與 new的衍生物件。

請參閱

概念

MFC 巨集和全域