AFXAPI AfxDumpStack(DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT); public static void
Parametri
dwTarget
Indica la destinazione dell'output di discarica. I valori possibili, che possono essere combinati utilizzando l'operatore OR bit per bit (|), sono i seguenti:
AFX_STACK_DUMP_TARGET_TRACE Invia uscita tramite la macro TRACE . La macro TRACE genera output nelle build di debug solo; genera alcun output nelle build di rilascio. Inoltre, traccia possono essere reindirizzati ad altri target oltre il debugger.
AFX_STACK_DUMP_TARGET_DEFAULT Invia il dump output a destinazione predefinita. Per una build di debug uscita va alla macro TRACE . In una build di rilascio uscita va negli Appunti.
AFX_STACK_DUMP_TARGET_CLIPBOARD Invia l'output solo negli Appunti. I dati vengono inseriti negli Appunti come testo normale utilizzando il formato degli Appunti CF_TEXT.
AFX_STACK_DUMP_TARGET_BOTH Manda di uscita negli appunti e alla macro TRACE , contemporaneamente.
AFX_STACK_DUMP_TARGET_ODS Invia uscita direttamente al debugger tramite la funzione Win32 OutputDebugString(). Questa opzione sarà genera il debugger output di debug e rilascio compilazioni quando è connesso un debugger al processo. AFX_STACK_DUMP_TARGET_ODS sempre raggiunge il debugger (se è collegata) e non può essere reindirizzato.
Osservazioni
Questa funzione globale può essere utilizzata per generare un'immagine dello stack corrente. Nell'esempio seguente riflette una sola riga di output generato dalla chiamata AfxDumpStack da un gestore di pulsante in un applicaton della finestra di dialogo MFC:
La seguente tabella descrive la riga sopra di output:
Uscita
Descrizione
BFF928E0:
L'indirizzo di ritorno dell'ultima chiamata di funzione.
WINDOWS\SYSTEM\KERNEL32.DLL!
Il nome di percorso completo del modulo che contiene la chiamata di funzione.
UTUnRegister
Il prototipo di funzione chiamato.
+ 2492 bytes
L'offset in byte dall'indirizzo del prototipo di funzione (in questo caso, UTUnRegister ) per l'indirizzo di ritorno (in questo caso, BFF928E0 ).
AfxDumpStack è disponibile in versioni di debug e non di debug delle librerie MFC; Tuttavia, la funzione è sempre collegata staticamente, anche quando il file eseguibile utilizza MFC in una DLL condivisa. In libreria condivisa implementazioni, la funzione si trova nel MFCS42.Libreria LIB (e le sue varianti).
Per utilizzare questa funzione con successo:
Il file IMAGEHLP.DLL deve essere sul vostro cammino. Se non hai questa DLL, la funzione visualizzerà un messaggio di errore. IMAGEHLP.DLL è una DLL ridistribuibile che le navi con Win32 SDK e con Windows. Cercarlo nelle C:\[windows]\system[32]. Vedi la Manipolazione di File eseguibile portabile per un'introduzione al set di funzione fornita da IMAGEHLP.
I moduli che hanno fotogrammi sullo stack devono includere informazioni di debug. Se essi non contengono informazioni di debug, la funzione ancora genererà un'analisi dello stack, ma la traccia sarà meno illustrata.