共用方式為


偵錯常式

C 執行階段程式庫的偵錯版本會提供許多診斷服務,讓您更容易偵錯的程式,並可讓開發人員:

  • 直接逐步執行至執行階段函式在偵錯期間

  • 解決的判斷提示、 錯誤和例外狀況

  • 追蹤堆積配置,並防止記憶體遺漏

  • 向使用者報告偵錯訊息

若要使用這些常式中, _DEBUG 必須定義旗標。 所有這些常式不執行任何動作的應用程式的零售版本。 如需有關如何使用新的偵錯常式的詳細資訊,請參閱 CRT 偵錯技巧

C 執行階段程式庫常式的偵錯版本

常式

使用

.NET Framework 的對等用法

_ASSERT 狀況

評估運算式,並且結果為 FALSE 時,會產生偵錯報告

System::Diagnostics::Debug:: 判斷提示

_ASSERTE 的判斷提示

類似於_ASSERT,但產生的報告中包括失敗的運算式

System::Diagnostics::Debug:: 判斷提示

_CrtCheckMemory

確認在偵錯堆積上配置的記憶體區塊的完整性

System::Diagnostics::PerformanceCounter

_CrtDbgBreak

設定中斷點。

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtDbgReport _CrtDbgReportW

產生偵錯報告與使用者的訊息,並將報告傳送給三個可能的目的地

System::Diagnostics::Debug::WriteSystem::Diagnostics::Debug::WritelineSystem::Diagnostics::Debug::WriteIfSystem::Diagnostics::Debug::WriteLineIf

_CrtDoForAllClientObjects

應用程式提供的函式之所有呼叫_CLIENT_BLOCK在堆積上的型別

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtDumpMemoryLeaks

傾印記憶體區塊,在 [偵錯堆積上的所有重要的記憶體遺漏發生時

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtIsMemoryBlock

請確認指定的記憶體區塊是位於本機的堆積,而且它具有有效的偵錯堆積區塊型別識別項

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtIsValidHeapPointer

確認指定的指標是在本機的堆積

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtIsValidPointer

請確認指定的記憶體範圍是適用於讀取和寫入

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtMemCheckpoint

取得偵錯堆積的目前狀態,並將它儲存在應用程式提供_CrtMemState結構

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtMemDifference

比較兩個記憶體狀態,造成可觀的差距,並傳回結果

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtMemDumpAllObjectsSince

傾印物件相關的資訊在堆積中,因為指定的檢查點拍攝,或從程式執行開始

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtMemDumpStatistics

傾印標頭的偵錯資訊的使用者可讀格式中指定的記憶體狀態

System::Diagnostics::PerformanceCounter

_CrtReportBlockType

會傳回區塊型別/子型別特定的偵錯堆積區塊指標相關聯。

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetAllocHook

將它連接到 c 執行階段偵錯記憶體配置的程序來安裝用戶端定義的配置函式

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetBreakAlloc

指定的物件配置的順序編號上設定中斷點

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetDbgFlag

擷取或修改的狀態_crtDbgFlag旗標,以控制配置行為的偵錯堆積管理員

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetDumpClient

安裝應用程式定義的函式,每次偵錯傾印函式呼叫來傾印時,會呼叫_CLIENT_BLOCK輸入記憶體區塊

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetReportFile

識別用來作為目的地的特定報表類型的資料流的檔案_CrtDbgReport

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetReportHook

將它連接到 c 執行階段偵錯報告程序來安裝用戶端定義報告函式

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetReportHook2 _CrtSetReportHookW2

安裝或解除安裝用戶端定義報告函式藉由將它連接到 c 執行階段偵錯報告程序。

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_CrtSetReportMode

指定所產生的特定報表類型為一般的目的地_CrtDbgReport

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_RPT [0,1,2,3,4]

藉由呼叫產生偵錯報告來追蹤應用程式的進度_CrtDbgReport格式的字串與不同數目引數。 提供 [沒有來源檔案和行號資訊。

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_RPTF [0,1,2,3,4]

類似於_RPTn巨集,但提供的來源檔名和行號報告要求的來源

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_calloc_dbg

偵錯的標頭配置指定的數量的額外空間與堆積上的記憶體區塊,並覆寫緩衝區

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_expand_dbg

展開或縮小的區塊,來調整指定在堆積上的記憶體區塊

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_free_dbg

釋放堆積記憶體的區塊

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_fullpath_dbg _wfullpath_dbg

建立指定的相對路徑的絕對或完整路徑名稱命名,請使用 _malloc_dbg 配置記憶體。

System::IO::File:: 建立

_getcwd_dbg _wgetcwd_dbg

取得目前的工作目錄中,使用 _malloc_dbg 配置記憶體。

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_malloc_dbg

偵錯的標頭配置的額外空間堆積上的記憶體區塊,並覆寫緩衝區

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_msize_dbg

計算在堆積上的記憶體區塊的大小

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_realloc_dbg

重新指定的記憶體區塊的堆積上配置以移動和/或調整大小的區塊

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

_strdup_dbg _wcsdup_dbg

重複的字串,使用 _malloc_dbg 配置記憶體。

System::String::Clone

_tempnam_dbg _wtempnam_dbg

產生的名稱可用來建立暫存檔,使用 _malloc_dbg 配置記憶體。

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

偵錯常式可以用來逐步執行大部分的其他 c 執行階段常式在偵錯的程序的原始程式碼。 不過,Microsoft 會認為是專屬的某些技術,因此,並未提供原始程式碼這些常式。 大部分的這些常式屬於例外處理或浮點數處理群組,但幾個其他人也包含在內。 下表列出這些常式。

未提供來源的程式碼形式的 c 執行階段常式

acos acosf

_fpclass

_nextafter

asin

_fpieee_flt

pow

atan atan2

_fpreset

printf、 _printf_l、 wprintf、 _wprintf_l, printf_s、 _printf_s_l、 wprintf_s、 _wprintf_s_l*

_cabs

frexp

_scalb

ceil

_hypot

scanf、 _scanf_l、 wscanf、 _wscanf_l, scanf_s、 _scanf_s_l、 wscanf_s、 _wscanf_s_l*

_chgsign _chgsignl

_isnan

setjmp

_clear87 _clearfp

_j0

sin

_control87,_controlfp __control87_2

_j1

sinh

_copysign _copysignl

_jn

sqrt

cos

ldexp

_status87 _statusfp

cosh

log

tan

經驗值

log10

tanh

fabs

_logb

_y0

_ 有限

longjmp

_y1

floor

_matherr

_yn

fmod

modf

 

* 雖然來源程式碼適用於大部分的這個常式,它會使得內部呼叫未提供原始碼的另一個常式。

某些 c 執行階段函式和 C++ 運算子行為有所不同時從 [偵錯組建中的應用程式呼叫。 (請注意,可以進行偵錯組建中的應用程式,不論是哪一種定義_DEBUG加上標幟,或藉由 c 執行階段程式庫的偵錯版本連結。) 行為差異通常是由額外的功能或以支援偵錯的處理常式所提供的資訊所組成。 下表列出這些常式。

在偵錯版中有不同的行為的常式建置的應用程式

C 中止常式

C + + 刪除運算子

C 判斷提示常式

C + + 運算子

如需有關如何使用前面表格中的 C++ 運算子的偵錯版本的詳細資訊,請參閱使用 C++ 偵錯堆積

請參閱

參考

依類別的執行階段常式

執行階段錯誤檢查