Condividi tramite


Servizi diagnostici

La libreria MFC fornisce numerosi servizi diagnostici che rendono eseguendo il debug dei programmi più semplice.Questi servizi diagnostici includono le macro e le funzioni globali che consentono di tenere traccia delle allocazioni di memoria del programma, che esegue il dump del contenuto degli oggetti in fase di esecuzione e che stampa dei messaggi di debug in fase di esecuzione.Le macro e le funzioni globali per i servizi diagnostici sono suddivise nelle seguenti categorie:

  • Macro di diagnostica generali

  • Funzioni e variabili diagnostiche generali

  • Funzioni di diagnostica dell'oggetto

Queste macro e funzioni sono disponibili per tutte le classi derivate da CObject nelle versioni di Debug e di rilascio MFC.Tuttavia, tutte tranne DEBUG_NEW e VERIFICA non effettuare alcuna operazione nella versione di rilascio.

Nella libreria di debug, tutti i blocchi di memoria allocata è racchiusa a una serie di “byte di protezione.„ Se questi byte sono compromessi da una memoria errante scrivere, le procedure di diagnostica può segnalare un problema.Se si include la riga:

#define new DEBUG_NEW

nel file di implementazione, tutte le chiamate a new archiviano il nome file e il numero di riga in cui l'allocazione della memoria è stata eseguita.La funzione CMemoryState::DumpAllObjectsSince visualizzare queste informazioni aggiuntive, consentendo di identificare le perdite di memoria.Fare riferimento alla classe CDumpContext per ulteriori informazioni sull'output di diagnostica.

Inoltre, la libreria di runtime del linguaggio C supporta inoltre un insieme di funzioni diagnostiche che è possibile utilizzare per eseguire il debug delle applicazioni.Per ulteriori informazioni, vedere Procedura di Debug in riferimenti alla libreria di runtime.

Macro di diagnostica generali di MFC

ASSERT

Visualizza un messaggio e quindi arrestare il programma se l'espressione specificata restituisce FALSE nella versione di debug della libreria.

ASSERT_KINDOF

Test che un oggetto è un oggetto della classe specificata o di una classe derivata dalla classe specificata.

ASSERT_VALID

Verifica la validità interna di un oggetto chiamando la funzione membro di AssertValid ; in genere eseguito l'override da CObject.

DEBUG_NEW

Fornisce un nome file e un numero di riga per tutte le allocazioni degli oggetti in modalità di debug per individuare perdite di memoria.

DEBUG_ONLY

Simile a ASSERT ma non verifica il valore dell'espressione; utile per il codice da eseguire solo in modalità di debug.

ANALISI

Fornisce printffunzionalità di tipo nella versione di debug della libreria.

VERIFICAR

Simile a ASSERT ma valuta l'espressione nella versione finale della raccolta e la versione di debug.

Variabili di diagnostica generali e funzioni MFC

afxDump

Variabile globale che invia le informazioni di CDumpContext alla finestra di output del debugger o a terminale di debug.

afxMemDF

Variabile globale che controlla il comportamento dell'allocatore di memoria di debug.

AfxCheckError

La variabile globale utilizzato per il test SCODE passato per verificare se è un errore e, in caso affermativo, generato l'errore corrispondente.

AfxCheckMemory

Controlla attualmente l'integrità di tutti memoria allocata.

AfxDump

Se viene chiamato durante il debugger, dump dello stato di un oggetto durante il debug.

AfxDumpStack

Generare un'immagine dello stack corrente.Questa funzione è sempre collegata in modo statico.

AfxEnableMemoryLeakDump

Abilita il dump delle perdite di memoria.

AfxEnableMemoryTracking

Disattiva la memoria che tiene traccia e chiuderlo.

AfxIsMemoryBlock

Verifica che un blocco di memoria correttamente sia stato allocato.

AfxIsValidAddress

Verifica che un intervallo di indirizzi di memoria sia entro i limiti del programma.

AfxIsValidString

Determina se un puntatore a una stringa è valido.

AfxSetAllocHook

Abilita la chiamata di una funzione su ogni allocazione di memoria.

Funzioni di diagnostica dell'oggetto MFC

AfxDoForAllClasses

Esegue una funzione specificata in qualsiasi CObjectdi classi derivate che supportano controllare il tipo di runtime.

AfxDoForAllObjects

Esegue una funzione specificata in qualsiasi CObjectoggetti derivati da allocati con new.

Vedere anche

Concetti

Macro MFC e Globals