Routine di debug
La versione di debug della libreria di runtime del linguaggio C fornisce numerosi servizi diagnostici che permettono di eseguire facilmente il debug di programmi e consentono agli sviluppatori di:
Passare direttamente le funzioni di runtime durante il debug
Risolvere asserzioni, errori ed eccezioni
Analizzare le allocazioni degli heap e impedire perdite di memoria
Riportare i messaggi di debug all'utente
Per utilizzare le routine, deve essere definito il flag _DEBUG. 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, consultare Tecniche di debug CRT.
Versioni di debug delle routine di libreria di runtime C
Routine |
Utilizzo |
Equivalente .NET Framework |
---|---|---|
Valuta un'espressione e genera un report di debug quando il risultato è FALSE |
||
Simile a _ASSERT, ma include l'espressione non riuscita nel rapporto generato |
||
Verifica l'integrità dei blocchi di memoria allocati nell'heap di debug |
||
Imposta un punto di interruzione. |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Genera un report di debug con un messaggio utente e invia il rapporto a tre possibili destinazioni |
System::Diagnostics::Debug::Write, System::Diagnostics::Debug::Writeline, System::Diagnostics::Debug::WriteIf, System::Diagnostics::Debug::WriteLineIf |
|
Chiama una funzione fornita esplicitamente per tutti i tipi _CLIENT_BLOCK nell'heap |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Esegue il dump di tutti i blocchi di memoria nell'heap di debug quando si è verificata una perdita di memoria significativa |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Verifica che un blocco di memoria specificato sia presente nell'heap locale con un identificatore valido del tipo di blocco dell'heap di debug |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Verifica che un puntatore specificato sia nell'heap locale |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Verifica che un determinato intervallo di memoria sia valido per la lettura e scrittura |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Ottiene lo stato corrente dell'heap di debug e lo archivia in una struttura fornita esplicitamente dall'applicazione _CrtMemState |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Confronta due stati di memoria per le differenze significative e restituisce i risultati |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Esegue il dump delle informazioni sugli oggetti nell'heap poiché è stato creato un checkpoint specificato o dall'avvio dell'esecuzione del programma |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Esegue il dump delle informazioni di intestazione di debug per una determinata condizione di memoria in formato leggibile dall'utente |
||
Restituisce il tipo di blocco/sottotipo associato a un dato puntatore di blocco dell'heap di debug. |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Installa una funzione di allocazione definita dal client agganciandola nel processo di allocazione della memoria di debug CRT |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Imposta un punto di interruzione su un numero di un ordine di allocazione di un oggetto specificato |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Recupera o modifica lo stato del flag _crtDbgFlag per controllare il comportamento dell'amministratore dell'heap di debug |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Installa una funzione definita dall'applicazione che viene chiamata ogni volta che una funzione di dump di debug viene chiamata per eseguire il dump dei blocchi di memoria del tipo _CLIENT_BLOCK |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Individua il file o un flusso da essere utilizzato come destinazione per un tipo di report specifico da _CrtDbgReport |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Installa una funzione definita dal client di segnalazione agganciandola nel processo di creazione di report di debug CRT |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Installa o disinstalla una funzione di segnalazione definita dal client agganciandola al processo di creazione di report di debug della fase di runtime del linguaggio C. |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Specifica le destinazioni generali per un tipo di report specifico generato da _CrtDbgReport |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Tiene traccia dello stato di avanzamento dell'applicazione generando 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 standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Simile alle macro _RPTn, ma fornisce il nome file di origine e il numero di riga in cui è stata originata la richiesta di report |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Alloca un numero specificato di blocchi di memoria nell'heap con ulteriore spazio per un'intestazione di debug e sovrascrive i buffer |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Ridimensiona un blocco di memoria specificato nell'heap espandendo o contraendo il blocco |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Libera un blocco di memoria nell'heap |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Crea un nome di percorso assoluto o completo per il percorso relativo specificato, utilizzando _malloc_dbg per allocare memoria. |
||
Ottiene la cartella di lavoro corrente, utilizzando _malloc_dbg per allocare memoria. |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Alloca un blocco di memoria nell'heap con ulteriore spazio per un'intestazione di debug e sovrascrive i buffer |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Calcola la dimensione di un blocco di memoria nell'heap |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Ridistribuisce un blocco di memoria specificato nell'heap spostando e/o ridimensionando il blocco |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
|
Duplica una stringa, con _malloc_dbg per allocare memoria. |
||
Genera i nomi utilizzabili per creare i file temporanei, utilizzando _malloc_dbg per allocare memoria. |
Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma. |
Le routine di debug possono essere utilizzate per eseguire il 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 gruppi di elaborazione a virgola mobile, ma alcune sono incluse. Nella tabella seguente sono elencate queste routine.
Routine di runtime del linguaggio C non disponibili nel codice sorgente
* Sebbene il codice sorgente sia disponibile per la maggior parte di queste routine, effettua una chiamata interna in un altro codice sorgente di routine, il quale non viene reso disponibile.
Alcune funzioni di runtime del linguaggio C e operatori C++ si comportano in modo diverso quando vengono chiamati da una build di debug di un'applicazione. (Notare che una build di debug di un'applicazione può essere eseguita definendo il flag _DEBUG o il collegamento a una versione di debug della libreria di runtime C.) Le differenze di comportamento sono costituiti da funzionalità aggiuntive o delle informazioni fornite dalla routine per supportare il processo di debug. Nella tabella seguente sono elencate queste routine.
Routine che si comportano in modo diverso in una build di debug di un'applicazione
Routine abort (C) |
Operatore delete (C++) |
Routine assert (C) |
Operatore new (C++) |