Servizi diagnostici

La libreria fornisce numerosi servizi diagnostici che rendono i programmi più facili di debug. Tali servizi diagnostici includono le macro e funzioni globali che consentono di tenere traccia di memoria del tuo programma allocazioni, dump il contenuto degli oggetti durante la fase di esecuzione e stampare i messaggi di debug durante la fase di esecuzione. Macro e funzioni globali per i servizi diagnostici sono raggruppate nelle seguenti categorie:

Queste macro e funzioni sono disponibili per tutte le classi derivate da CObject nelle versioni di Debug e di rilascio di MFC. Tuttavia, tutti tranne DEBUG_NEW e verificare che non fare niente nella versione di rilascio.

Nella libreria di Debug, tutti i blocchi di memoria allocata sono racchiuse con una serie di "guardia bytes." Se questi byte vengono disturbati da una scrittura memoria errante, le routine di diagnostiche possono segnalare un problema. Se si include la linea

# define DEBUG_NEW nuovo

nel vostro file di implementazione, tutte le chiamate al nuovo memorizzerà il numero filename e linea dove avveniva l'allocazione di memoria. La funzione CMemoryState::DumpAllObjectsSince visualizzerà queste informazioni supplementari, permettendo di identificare le perdite di memoria. Fare riferimento anche alla classe CDumpContext per ulteriori informazioni sull'output di diagnostica.

Inoltre, la libreria di runtime c supporta inoltre una serie di funzioni di diagnostica che è possibile utilizzare per eseguire il debug delle applicazioni. Per ulteriori informazioni, vedere Routine di Debug in Riferimento alla libreria di runtime.

MFC generale diagnostica macro

AFFERMARE Stampa di un messaggio e quindi interrompe il programma se l'espressione specificata restituisce FALSE in 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 AssertValid ; in genere viene sottoposto a override da CObject.
DEBUG_NEW Fornisce un numero filename e linea per tutte le allocazioni di oggetti in modalità di Debug per aiutare a trovare le perdite di memoria.
TRACCIA Fornisce printf-come funzionalità nella versione di Debug della libreria.
TRACE0 Simile alla traccia ma richiede un formato stringa senza argomenti.
TRACE1 Simile alla traccia ma richiede un formato di stringa con un solo argomento.
TRACE2 Simile alla traccia ma richiede un formato stringa con due argomenti.
TRACE3 Simile alla traccia ma richiede un formato stringa con tre argomenti.
VERIFICARE Simile a ASSERT ma valuta l'espressione nella versione finale della biblioteca così come nella versione di Debug.

MFC generale diagnostica variabili e funzioni

afxDump Variabile globale che invia informazioni CDumpContext nella finestra di output del debugger o al terminale debug.
afxMemDF Variabile globale che controlla il comportamento dell'allocatore di memoria di debug.
afxTraceEnabled Variabile globale utilizzato per attivare o disattivare l'output da macro TRACE.
afxTraceFlags Variabile globale utilizzato per attivare la funzionalità di reporting incorporata di MFC.
AfxCheckError Variabile globale utilizzato per testare il passato SCODE per vedere se si tratta di un errore e, in caso affermativo, genera l'errore appropriato.
AfxCheckMemory Verifica che l'integrità di tutti attualmente memoria allocata.
AfxDump Se chiamato mentre nel debugger, dump dello stato di un oggetto durante il debug.
AfxDumpStack Generare un'immagine dello stack corrente. Questa funzione è sempre collegata staticamente.
AfxEnableMemoryTracking Si trasforma la memoria di rilevamento on e off.
AfxIsMemoryBlock Verifica che un blocco di memoria è stato allocato correttamente.
AfxIsValidAddress Verifica che un intervallo di indirizzi di memoria sia entro limiti del programma.
AfxIsValidString Determina se un puntatore a una stringa è valido.
AfxSetAllocHook Consente la chiamata di una funzione su ogni allocazione di memoria.

MFC Object funzioni diagnostiche

AfxDoForAllClasses Esegue una funzione specificata su tutti i CObject-derivati classi che supportano il controllo dei tipi in fase di esecuzione.
AfxDoForAllObjects Esegue una funzione specificata su tutti i CObject-derivati gli oggetti che sono stati stanziati con il nuovo.

Index