Routine di debugDebug Routines

La versione di debug della libreria di runtime C offre numerosi servizi diagnostici che semplificano il debug dei programmi e consentono agli sviluppatori di:The debug version of the C run-time library supplies many diagnostic services that make debugging programs easier and allow developers to:

  • Accedere direttamente alle funzioni di runtime durante il debugStep directly into run-time functions during debugging

  • Risolvere asserzioni, errori ed eccezioniResolve assertions, errors, and exceptions

  • Tenere traccia delle allocazioni di heap e impedire perdite di memoriaTrace heap allocations and prevent memory leaks

  • Segnalare i messaggi di debug all'utenteReport debug messages to the user

    Per usare queste routine, il flag _DEBUG deve essere definito.To use these routines, the _DEBUG flag must be defined. Tutte queste routine non eseguono alcuna operazione nella versione finale di un'applicazione.All of these routines do nothing in a retail build of an application. Per altre informazioni sull'uso delle nuove routine di debug, vedere Tecniche di debug CRT.For more information on how to use the new debug routines, see CRT Debugging Techniques.

Versioni di debug delle routine della libreria di runtime CDebug Versions of the C Run-Time Library Routines

RoutineRoutine UsoUse
_ASSERT_ASSERT Valutare un'espressione e generare un report di debug quando il risultato è FALSEEvaluate an expression and generates a debug report when the result is FALSE
_ASSERTE_ASSERTE Simile a _ASSERT, ma include l'espressione non riuscita nel report generatoSimilar to _ASSERT, but includes the failed expression in the generated report
_CrtCheckMemory_CrtCheckMemory Confermare l'integrità dei blocchi di memoria allocati nell'heap di debugConfirm the integrity of the memory blocks allocated on the debug heap
_CrtDbgBreak_CrtDbgBreak Imposta un punto di interruzione.Sets a break point.
_CrtDbgReport, _CrtDbgReportW_CrtDbgReport, _CrtDbgReportW Generano un report di debug con un messaggio per l'utente e lo inviano a tre possibili destinazioniGenerate a debug report with a user message and send the report to three possible destinations
_CrtDoForAllClientObjects_CrtDoForAllClientObjects Chiamare una funzione specificata dall'applicazione per tutti i tipi di _CLIENT_BLOCK nell'heapCall an application-supplied function for all _CLIENT_BLOCK types on the heap
_CrtDumpMemoryLeaks_CrtDumpMemoryLeaks Dump di tutti i blocchi di memoria nell'heap di debug quando si verifica una consistente perdita di memoriaDump all of the memory blocks on the debug heap when a significant memory leak has occurred
_CrtIsMemoryBlock_CrtIsMemoryBlock Verificare che un blocco di memoria specificato si trovi nell'heap locale e che abbia un identificatore di tipo blocco dell'heap di debug validoVerify that a specified memory block is located within the local heap and that it has a valid debug heap block type identifier
_CrtIsValidHeapPointer_CrtIsValidHeapPointer Verifica se un puntatore specificato è nell'heap localeVerifies that a specified pointer is in the local heap
_CrtIsValidPointer_CrtIsValidPointer Verificare che l'intervallo di memoria specificato sia valido per lettura e scritturaVerify that a specified memory range is valid for reading and writing
_CrtMemCheckpoint_CrtMemCheckpoint Ottenere lo stato corrente dell'heap di debug e memorizzarlo in una struttura _CrtMemState specificata dall'applicazioneObtain the current state of the debug heap and store it in an application-supplied _CrtMemState structure
_CrtMemDifference_CrtMemDifference Confrontare due stati della memoria per verificare la presenza di differenze significative e restituire i risultatiCompare two memory states for significant differences and return the results
_CrtMemDumpAllObjectsSince_CrtMemDumpAllObjectsSince Dump delle informazioni sugli oggetti nell'heap dal momento in cui è stato acquisito un checkpoint specificato o è stata avviata l'esecuzione del programmaDump information about objects on the heap since a specified checkpoint was taken or from the start of program execution
_CrtMemDumpStatistics_CrtMemDumpStatistics Dump delle informazioni di intestazione di debug per uno stato della memoria specificato in un form leggibile dall'utenteDump the debug header information for a specified memory state in a user-readable form
_CrtReportBlockType_CrtReportBlockType Restituisce il tipo/sottotipo di blocco associato a un puntatore di blocco dell'heap di debug specificato.Returns the block type/subtype associated with a given debug heap block pointer.
_CrtSetAllocHook_CrtSetAllocHook Installare una funzione di allocazione definita dal client associandola al processo di allocazione della memoria di debug del runtime CInstall a client-defined allocation function by hooking it into the C run-time debug memory allocation process
_CrtSetBreakAlloc_CrtSetBreakAlloc Impostare un punto di interruzione su un determinato numero di ordine di allocazione dell'oggettoSet a breakpoint on a specified object allocation order number
_CrtSetDbgFlag_CrtSetDbgFlag Recuperare o modificare lo stato del flag _crtDbgFlag per controllare il comportamento di allocazione del gestore dell'heap di debugRetrieve or modify the state of the _crtDbgFlag flag to control the allocation behavior of the debug heap manager
_CrtSetDumpClient_CrtSetDumpClient Installare una funzione definita dall'applicazione che viene chiamata ogni volta che una funzione di dump di debug viene chiamata per il dump dei blocchi di memoria di tipo _CLIENT_BLOCKInstall an application-defined function that is called every time a debug dump function is called to dump _CLIENT_BLOCK type memory blocks
_CrtSetReportFile_CrtSetReportFile Identificare il file o flusso che verrà usato da _CrtDbgReport come destinazione per un tipo di report specificoIdentify the file or stream to be used as a destination for a specific report type by _CrtDbgReport
_CrtSetReportHook_CrtSetReportHook Installare una funzione per la creazione di report definita dal client associandola al processo di creazione di report sul debug del runtime CInstall a client-defined reporting function by hooking it into the C run-time debug reporting process
_CrtSetReportHook2, _CrtSetReportHookW2_CrtSetReportHook2, _CrtSetReportHookW2 Installare o disinstallare una funzione per la creazione di report definita dal client associandola al processo di creazione di report sul debug del runtime C.Installs or uninstalls a client-defined reporting function by hooking it into the C run-time debug reporting process.
_CrtSetReportMode_CrtSetReportMode Specificare le destinazioni generali per un tipo specifico di report generato da _CrtDbgReportSpecify the general destination(s) for a specific report type generated by _CrtDbgReport
_RPT[0,1,2,3,4]_RPT[0,1,2,3,4] Tenere traccia dell'avanzamento dell'applicazione con un report di debug generato chiamando _CrtDbgReport con una stringa di formato e un numero variabile di argomenti.Track the application's progress by generating a debug report by calling _CrtDbgReport with a format string and a variable number of arguments. Non specifica informazioni sul file di origine e il numero di riga.Provides no source file and line number information.
_RPTF[0,1,2,3,4]_RPTF[0,1,2,3,4] Simile alle macro _RPTn ma specifica il nome del file di origine e il numero di riga in cui ha origine la richiesta di reportSimilar to the _RPTn macros, but provides the source file name and line number where the report request originated
_calloc_dbg_calloc_dbg Allocare un numero specificato di blocchi di memoria nell'heap con spazio aggiuntivo per un'intestazione di debug e buffer di sovrascritturaAllocate a specified number of memory blocks on the heap with additional space for a debugging header and overwrite buffers
_expand_dbg_expand_dbg Ridimensiona un blocco di memoria specificato nell'heap espandendo o contraendo il bloccoResize a specified block of memory on the heap by expanding or contracting the block
_free_dbg_free_dbg Liberare un blocco di memoria nell'heapFree a block of memory on the heap
_fullpath_dbg, _wfullpath_dbg_fullpath_dbg, _wfullpath_dbg Creare un nome di percorso assoluto o completo per il nome di percorso relativo specificato usando _malloc_dbg per allocare memoria.Create an absolute or full path name for the specified relative path name, using _malloc_dbg to allocate memory.
_getcwd_dbg, _wgetcwd_dbg_getcwd_dbg, _wgetcwd_dbg Ottenere la directory di lavoro corrente usando _malloc_dbg per allocare memoria.Get the current working directory, using _malloc_dbg to allocate memory.
_malloc_dbg_malloc_dbg Allocare un blocco di memoria nell'heap con spazio aggiuntivo per un'intestazione di debug e buffer di sovrascritturaAllocate a block of memory on the heap with additional space for a debugging header and overwrite buffers
_msize_dbg_msize_dbg Calcolare le dimensioni di un blocco di memoria nell'heapCalculate the size of a block of memory on the heap
_realloc_dbg_realloc_dbg Riallocare un blocco specificato di memoria nell'heap spostando e/o ridimensionando il bloccoReallocate a specified block of memory on the heap by moving and/or resizing the block
_strdup_dbg, _wcsdup_dbg_strdup_dbg, _wcsdup_dbg Duplica una stringa usando _malloc_dbg per allocare memoria.Duplicates a string, using _malloc_dbg to allocate memory.
_tempnam_dbg, _wtempnam_dbg_tempnam_dbg, _wtempnam_dbg Generano i nomi che possono essere usati per creare i file temporanei, usando _malloc_dbg per allocare memoria.Generate names you can use to create temporary files, using _malloc_dbg to allocate memory.

Le routine di debug possono essere usate per eseguire il codice sorgente un'istruzione alla volta per la maggior parte delle altre routine di runtime C durante il processo di debug.The debug routines can be used to step through the source code for most of the other C run-time routines during the debugging process. Per Microsoft tuttavia si tratta di una tecnologia proprietaria, quindi il codice sorgente per queste routine non è disponibile.However, Microsoft considers some technology to be proprietary and, therefore, does not provide the source code for these routines. Nella maggior parte dei casi queste routine appartengono ai gruppi di gestione delle eccezioni o ai gruppi di elaborazione a virgola mobile, ma anche ad alcuni altri gruppi.Most of these routines belong to either the exception handling or floating-point processing groups, but a few others are included as well. Le routine sono riportate nella tabella seguente.The following table lists these routines.

Routine di runtime C non disponibili come codice sorgenteC Run-Time Routines That Are Not Available in Source Code Form

acos, acosf, acoslacos, acosf, acosl _fpclass_fpclass _nextafter_nextafter
asinasin _fpieee_flt_fpieee_flt powpow
atan, atan2atan, atan2 _fpreset_fpreset printf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_lprintf, _printf_l, wprintf, _wprintf_l, printf_s, _printf_s_l, wprintf_s, _wprintf_s_l
_cabs_cabs frexpfrexp _scalb_scalb
ceilceil _hypot_hypot scanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_lscanf, _scanf_l, wscanf, _wscanf_l, scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l
_chgsign, _chgsignf, _chgsignl_chgsign, _chgsignf, _chgsignl _isnan_isnan setjmpsetjmp
_clear87, _clearfp_clear87, _clearfp _j0_j0 sinsin
_control87, _controlfp, __control87_2_control87, _controlfp, __control87_2 _j1_j1 sinhsinh
copysign, copysignf, copysignl, _copysign, _copysignf, _copysignlcopysign, copysignf, copysignl, _copysign, _copysignf, _copysignl _jn_jn sqrtsqrt
coscos ldexpldexp _status87, _statusfp_status87, _statusfp
coshcosh loglog tantan
ExpExp log10log10 tanhtanh
fabsfabs _logb_logb _y0_y0
_finite_finite longjmplongjmp _y1_y1
floorfloor _matherr_matherr _yn_yn
fmodfmod modfmodf

* Sebbene il codice sorgente sia disponibile per la maggior parte di questa routine, la routine effettua una chiamata interna a un'altra routine per cui non è disponibile il codice sorgente.* Although source code is available for most of this routine, it makes an internal call to another routine for which source code is not provided.

Alcuni operatori C++ e funzioni di runtime C si comportano in modo diverso quando vengono chiamati da una build di debug di un'applicazione.Some C run-time functions and C++ operators behave differently when called from a debug build of an application. Si noti che una build di debug di un'applicazione può essere eseguita definendo il flag _DEBUG o con il collegamento a una versione di debug della libreria di runtime C. Le differenze di comportamento in genere sono rappresentate da funzionalità o informazioni aggiuntive specificate dalla routine per supportare il processo di debug.(Note that a debug build of an application can be done by either defining the _DEBUG flag or by linking with a debug version of the C run-time library.) The behavioral differences usually consist of extra features or information provided by the routine to support the debugging process. Le routine sono riportate nella tabella seguente.The following table lists these routines.

Routine che si comportano in modo diverso nella build di debug di un'applicazioneRoutines that Behave Differently in a Debug Build of an Application

Routine C abortC abort routine Operatore C++ deleteC++ delete operator
Routine C assertC assert routine Operatore C++ newC++ new operator

Vedere ancheSee Also

Routine di runtime per categoria Run-Time Routines by Category
Controllo degli errori di runtimeRun-Time Error Checking