偵錯常式
C 執行階段程式庫的偵錯版本會提供許多診斷服務,讓您更容易偵錯的程式,並可讓開發人員:
直接逐步執行至執行階段函式在偵錯期間
解決的判斷提示、 錯誤和例外狀況
追蹤堆積配置,並防止記憶體遺漏
向使用者報告偵錯訊息
若要使用這些常式中, _DEBUG 必須定義旗標。 所有這些常式不執行任何動作的應用程式的零售版本。 如需有關如何使用新的偵錯常式的詳細資訊,請參閱 CRT 偵錯技巧。
C 執行階段程式庫常式的偵錯版本
常式 |
使用 |
.NET Framework 的對等用法 |
---|---|---|
評估運算式,並且結果為 FALSE 時,會產生偵錯報告 |
||
類似於_ASSERT,但產生的報告中包括失敗的運算式 |
||
確認在偵錯堆積上配置的記憶體區塊的完整性 |
||
設定中斷點。 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
產生偵錯報告與使用者的訊息,並將報告傳送給三個可能的目的地 |
System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf |
|
應用程式提供的函式之所有呼叫_CLIENT_BLOCK在堆積上的型別 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
傾印記憶體區塊,在 [偵錯堆積上的所有重要的記憶體遺漏發生時 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
請確認指定的記憶體區塊是位於本機的堆積,而且它具有有效的偵錯堆積區塊型別識別項 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
確認指定的指標是在本機的堆積 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
請確認指定的記憶體範圍是適用於讀取和寫入 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
取得偵錯堆積的目前狀態,並將它儲存在應用程式提供_CrtMemState結構 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
比較兩個記憶體狀態,造成可觀的差距,並傳回結果 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
傾印物件相關的資訊在堆積中,因為指定的檢查點拍攝,或從程式執行開始 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
傾印標頭的偵錯資訊的使用者可讀格式中指定的記憶體狀態 |
||
會傳回區塊型別/子型別特定的偵錯堆積區塊指標相關聯。 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
將它連接到 c 執行階段偵錯記憶體配置的程序來安裝用戶端定義的配置函式 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
指定的物件配置的順序編號上設定中斷點 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
擷取或修改的狀態_crtDbgFlag旗標,以控制配置行為的偵錯堆積管理員 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
安裝應用程式定義的函式,每次偵錯傾印函式呼叫來傾印時,會呼叫_CLIENT_BLOCK輸入記憶體區塊 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
識別用來作為目的地的特定報表類型的資料流的檔案_CrtDbgReport |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
將它連接到 c 執行階段偵錯報告程序來安裝用戶端定義報告函式 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
安裝或解除安裝用戶端定義報告函式藉由將它連接到 c 執行階段偵錯報告程序。 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
指定所產生的特定報表類型為一般的目的地_CrtDbgReport |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
藉由呼叫產生偵錯報告來追蹤應用程式的進度_CrtDbgReport格式的字串與不同數目引數。 提供 [沒有來源檔案和行號資訊。 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
類似於_RPTn巨集,但提供的來源檔名和行號報告要求的來源 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
偵錯的標頭配置指定的數量的額外空間與堆積上的記憶體區塊,並覆寫緩衝區 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
展開或縮小的區塊,來調整指定在堆積上的記憶體區塊 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
釋放堆積記憶體的區塊 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
建立指定的相對路徑的絕對或完整路徑名稱命名,請使用 _malloc_dbg 配置記憶體。 |
||
取得目前的工作目錄中,使用 _malloc_dbg 配置記憶體。 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
偵錯的標頭配置的額外空間堆積上的記憶體區塊,並覆寫緩衝區 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
計算在堆積上的記憶體區塊的大小 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
重新指定的記憶體區塊的堆積上配置以移動和/或調整大小的區塊 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
|
重複的字串,使用 _malloc_dbg 配置記憶體。 |
||
產生的名稱可用來建立暫存檔,使用 _malloc_dbg 配置記憶體。 |
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。 |
偵錯常式可以用來逐步執行大部分的其他 c 執行階段常式在偵錯的程序的原始程式碼。 不過,Microsoft 會認為是專屬的某些技術,因此,並未提供原始程式碼這些常式。 大部分的這些常式屬於例外處理或浮點數處理群組,但幾個其他人也包含在內。 下表列出這些常式。
未提供來源的程式碼形式的 c 執行階段常式
printf、 _printf_l、 wprintf、 _wprintf_l, printf_s、 _printf_s_l、 wprintf_s、 _wprintf_s_l* |
||
scanf、 _scanf_l、 wscanf、 _wscanf_l, scanf_s、 _scanf_s_l、 wscanf_s、 _wscanf_s_l* |
||
|
* 雖然來源程式碼適用於大部分的這個常式,它會使得內部呼叫未提供原始碼的另一個常式。
某些 c 執行階段函式和 C++ 運算子行為有所不同時從 [偵錯組建中的應用程式呼叫。 (請注意,可以進行偵錯組建中的應用程式,不論是哪一種定義_DEBUG加上標幟,或藉由 c 執行階段程式庫的偵錯版本連結。) 行為差異通常是由額外的功能或以支援偵錯的處理常式所提供的資訊所組成。 下表列出這些常式。
在偵錯版中有不同的行為的常式建置的應用程式
C 中止常式 |
C + + 刪除運算子 |
C 判斷提示常式 |
C + + 新運算子 |
如需有關如何使用前面表格中的 C++ 運算子的偵錯版本的詳細資訊,請參閱使用 C++ 偵錯堆積。