Condividi tramite


Procedura di debug

La versione di debug della libreria di runtime del linguaggio C fornisce numerosi servizi diagnostici a cui rendere i programmi di debug più facili e consentire agli sviluppatori:

  • Passaggio direttamente le funzioni di runtime durante il debug

  • Asserzioni, errori ed eccezioni di risoluzione

  • La tracciatura delle allocazioni heap e impedire perdite di memoria

  • Messaggi di debug di rapporto all'utente

Per utilizzare le routine, _DEBUG il flag deve essere definito.Tutte le routine non hanno alcun effetto in una build finale di un'applicazione.per ulteriori informazioni su come utilizzare le nuove routine di debug, vedere tecniche di debug CRT.

Versioni di debug delle routine della libreria di runtime del linguaggio C

routine

Utilizzare

equivalente di .NET Framework

_ASSERT

valutare un'espressione e generato un report di debug quando il risultato è FALSE

System:: diagnostica:: debug:: asserzione

_ASSERTE

simile a _ASSERT, ma include l'espressione non riuscita il rapporto generato

System:: diagnostica:: debug:: asserzione

_CrtCheckMemory

Verificare l'integrità dei blocchi di memoria allocati nell'heap di debug

System:: diagnostica:: PerformanceCounter

_CrtDbgBreak

Imposta un punto di interruzione.

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtDbgReport, _CrtDbgReportW

Generare un report di debug con un messaggio utente e inviare il rapporto a tre possibili destinazioni

System:: diagnostica:: debug:: scrivere, System:: diagnostica:: debug:: Writeline, System:: diagnostica:: debug:: WriteIf, System:: diagnostica:: debug:: WriteLineIf

_CrtDoForAllClientObjects

chiamare una funzione applicazione-fornita per tutti _CLIENT_BLOCK tipi nell'heap

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtDumpMemoryLeaks

Eseguire il dump di tutti i blocchi di memoria nell'heap di debug quando una perdita di memoria significativa si è verificata

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtIsMemoryBlock

Verificare che un blocco di memoria specificato sia situato nell'heap locale con un identificatore valido del tipo di blocco dell'heap di debug

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtIsValidHeapPointer

Verifica che un puntatore specificato sia nell'heap locale

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtIsValidPointer

Verificare che un determinato intervallo di memoria sia valido per la lettura e scrittura

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtMemCheckpoint

Ottenere lo stato corrente dell'heap di debug e memorizzarlo in applicazione-fornito _CrtMemState struttura

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtMemDifference

confrontare due stati di memoria per le differenze significative e restituire i risultati

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtMemDumpAllObjectsSince

Per eseguire il dump delle informazioni sugli oggetti nell'heap poiché un checkpoint specificato è stato creato o dall'inizio dell'esecuzione del programma

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtMemDumpStatistics

Per eseguire il dump delle informazioni di intestazione di debug per un determinato stato di memoria in formato leggibile dall'utente

System:: diagnostica:: PerformanceCounter

_CrtReportBlockType

Restituisce il tipo di blocco/sottotipo associati a un puntatore specificato del blocco dell'heap di debug.

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetAllocHook

Installare una funzione di allocazione definita dal client agganciandola nel processo di allocazione della memoria di debug di runtime del linguaggio C

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetBreakAlloc

Impostare un punto di interruzione su un numero ordine specificato di allocazione di oggetti

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetDbgFlag

Recuperare o modificare lo stato di _crtDbgFlag flag per controllare il comportamento di allocazione dell'heap di debug

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetDumpClient

Installare una funzione definita dall'applicazione che viene chiamata ogni volta che una funzione di dump di debug viene chiamata per eseguire il dump _CLIENT_BLOCK digitare i blocchi di memoria

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetReportFile

Individuare il file o un flusso per essere utilizzato come destinazione per un tipo di report specifico da _CrtDbgReport

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetReportHook

Installare una funzione definita dal client di segnalazione agganciandola nel runtime del linguaggio C debug che segnala il processo

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetReportHook2, _CrtSetReportHookW2

Installazione o disinstallazione una funzione definita dal client di segnalazione agganciandola nel runtime del linguaggio C debug che segnala il processo.

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_CrtSetReportMode

Specificare le destinazioni generali per un tipo di report specifico generato da _CrtDbgReport

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

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

Tenere traccia dello stato di avanzamento dell'applicazione viene generato un report di debug chiamando _CrtDbgReport con una stringa di formato e un numero variabile di argomenti.Non fornisce informazioni sul numero di riga e del file di origine.

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

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

Simile a _RPTn le macro, ma fornisce il nome file di origine e il numero di riga in cui la richiesta del rapporto proviene

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_calloc_dbg

Allocare un numero specificato di blocchi di memoria nell'heap con spazio aggiuntivo per un'intestazione di debug e sovrascrivere i buffer

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_expand_dbg

Per ridimensionare un blocco di memoria specificato nell'heap espandendo o contraendo il blocco

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_free_dbg

Liberare un blocco di memoria nell'heap

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_fullpath_dbg, _wfullpath_dbg

Creare un assoluto o un nome di percorso completo per il percorso relativo specificato, tramite differenze per allocare memoria.

System:: I:: file:: creare

_getcwd_dbg, _wgetcwd_dbg

Ottenere la cartella di lavoro corrente, tramite differenze per allocare memoria.

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

differenze

Allocare un blocco di memoria nell'heap con spazio aggiuntivo per un'intestazione di debug e sovrascrivere i buffer

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_msize_dbg

Calcolare la dimensione di un blocco di memoria nell'heap

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_realloc_dbg

Ridistribuire un blocco di memoria specificato nell'heap spostando e/o il ridimensionamento del blocco

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

_strdup_dbg, _wcsdup_dbg

Duplica una stringa, tramite differenze per allocare memoria.

System:: stringa:: clone

_tempnam_dbg, _wtempnam_dbg

Generare nomi che è possibile utilizzare per creare i file temporanei, tramite differenze per allocare memoria.

Non applicabile.Per chiamare la funzione c standard, utilizzare PInvoke.Per ulteriori informazioni, vedere Esempi di pinvoke.

Le routine di debug possono essere utilizzate per l'esecuzione del codice sorgente per la maggior parte delle altre routine di runtime del linguaggio C durante il processo di debug.Tuttavia, Microsoft considera la tecnologia come privata e, pertanto, non fornisce il codice sorgente per queste routine.La maggior parte di queste routine appartengono alla gestione delle eccezioni o a virgola mobile di elaborazione, ma alcuni altre sono incluse anche.Nella tabella seguente sono elencate le routine.

Routine di runtime del linguaggio C non disponibili in forma di codice sorgente

acos, acosf

_fpclass

_nextafter

asin

_fpieee_flt

a causa della rimozione di 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

Esp

log10

tanh

fabs

_logb

_y0

_finite

longjmp

_y1

floor

_matherr

_yn

fmod

modf

 

* Sebbene il codice sorgente sia disponibile per la maggior parte di questa procedura, effettua una chiamata interna a un altro codice sorgente di routine per il quale non viene fornito.

Alcune funzioni di runtime del linguaggio C gli operatori e C++ si comportano in modo diverso quando vengono chiamati da una build di debug di un'applicazione.Si noti che una build di debug di un'applicazione può essere eseguita verso una o l'altra definizione _DEBUG per impostare o il collegamento a una versione di debug della libreria di runtime C.) Le differenze di comportamento generale sono costituite da funzionalità aggiuntive o delle informazioni fornite dalla routine per supportare il processo di debug.Nella tabella seguente sono elencate le routine.

Routine che si comportano in modo diverso in una build di debug di un'applicazione

C# interruzione routine

C++ eliminazione operatore

C# asserzione routine

C++ nuovo operatore

Per ulteriori informazioni sull'utilizzo delle versioni di debug degli operatori C++ nella tabella precedente, vedere Utilizzo dell'heap di debug da C++.

Vedere anche

Riferimenti

Routine di runtime per la categoria

Controllo degli errori di runtime