Partager via


AfxDumpStack

Cette fonction globale peut être utilisée pour générer une image de la pile actuelle.

void AFXAPI AfxDumpStack(
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT
);

Paramètres

  • dwTarget
    Indique la cible de la sortie de dump.Valeurs possibles, qui peuvent être combinées à l'aide de l'opérateur de bits OR (|) l'opérateur, sont les suivantes :

    • AFX_STACK_DUMP_TARGET_TRACE envoie la sortie au moyen de la macro de TRACE .La macro de TRACE génère la sortie dans les versions debug uniquement ; il ne génère pas de sortie dans les versions release.En outre, TRACE peut être redirigée vers d'autres cibles en plus de le débogueur.

    • AFX_STACK_DUMP_TARGET_DEFAULT envoie la sortie de dump à la cible par défaut.Pour une version debug, la sortie accède à TRACE la macro.Dans une version release, la sortie est redirigé vers le presse-papiers.

    • AFX_STACK_DUMP_TARGET_CLIPBOARD envoie la sortie vers le presse-papiers uniquement.Les données est placée dans le presse-papiers en texte brut à l'aide de le format de presse-papiers du CF_TEXT .

    • AFX_STACK_DUMP_TARGET_BOTH envoie la sortie vers le presse-papiers et à la macro de TRACE , simultanément.

    • AFX_STACK_DUMP_TARGET_ODS envoie la sortie directement au débogueur au moyen de la fonction **OutputDebugString()**Win32.Cette option génère la sortie du débogueur dans les versions debug et release lorsqu'un débogueur est attaché au processus.AFX_STACK_DUMP_TARGET_ODS toujours atteint le débogueur (s'il est attaché) et ne peut pas être redirigé.

Notes

L'exemple ci-dessous reflète une ligne unique de la sortie générée d'appeler AfxDumpStack d'un gestionnaire de bouton dans une application de dialogue MFC :

=== begin AfxDumpStack output ===

00427D55: DUMP2\DEBUG\DUMP2.EXE! void AfxDumpStack(unsigned long) + 181 bytes

0040160B: DUMP2\DEBUG\DUMP2.EXE! void CDump2Dlg::OnClipboard(void) + 14 bytes

0044F884: DUMP2\DEBUG\DUMP2.EXE! int _AfxDispatchCmdMsg(class CCmdTarget *,

unsigned int,int,void ( CCmdTarget::*)(void),void *,unsigned int,struct AFX_CMDHANDLE

0044FF7B: DUMP2\DEBUG\DUMP2.EXE! virtual int CCmdTarget::OnCmdMsg(unsigned

int,int,void *,struct AFX_CMDHANDLERINFO *) + 626 bytes

00450C71: DUMP2\DEBUG\DUMP2.EXE! virtual int CDialog::OnCmdMsg(unsigned

int,int,void *,struct AFX_CMDHANDLERINFO *) + 36 bytes

00455B27: DUMP2\DEBUG\DUMP2.EXE! virtual int CWnd::OnCommand(unsigned

int,long) + 312 bytes

00454D3D: DUMP2\DEBUG\DUMP2.EXE! virtual int CWnd::OnWndMsg(unsigned

int,unsigned int,long,long *) + 83 bytes

00454CC0: DUMP2\DEBUG\DUMP2.EXE! virtual long CWnd::WindowProc(unsigned

int,unsigned int,long) + 46 bytes

004528D9: DUMP2\DEBUG\DUMP2.EXE! long AfxCallWndProc(class CWnd *,struct

HWND__ *,unsigned int,unsigned int,long) + 237 bytes

00452D34: DUMP2\DEBUG\DUMP2.EXE! long AfxWndProc(struct HWND__ *,unsigned

int,unsigned int,long) + 129 bytes

BFF73663: WINDOWS\SYSTEM\KERNEL32.DLL! ThunkConnect32 + 2148 bytes

BFF928E0: WINDOWS\SYSTEM\KERNEL32.DLL! UTUnRegister + 2492 bytes

=== end AfxDumpStack() output ===

Chaque ligne de la sortie ci-dessus indique l'adresse du dernier appel de fonction, du chemin d'accès complet du module qui contient l'appel de fonction, et du prototype de la fonction appelée.Si un appel de fonction dans la pile ne se produit pas à l'adresse exacte de la fonction, un offset d'octets est affiché.

Par exemple, le tableau suivant décrit la première ligne de la sortie ci-dessus :

Sortie

Description

00427D55:

l'adresse de retour du dernier appel de fonction.

DUMP2\DEBUG\DUMP2.EXE!

Le chemin d'accès complet du module qui contient l'appel de fonction.

void AfxDumpStack(unsigned long)

Le prototype de fonction appelée.

+ 181 bytes

L'offset en octets de l'adresse du prototype de fonction (dans ce cas, void AfxDumpStack(unsigned long)) à l'adresse de retour (dans ce cas, 00427D55).

AfxDumpStack est disponible dans les versions debug et sans débogage des bibliothèques MFC ; toutefois, la fonction est toujours liée de manière statique, même lorsque votre fichier exécutable utilise MFC dans une DLL partagées.Dans les implémentations de partager-bibliothèque, la fonction est trouvée dans la bibliothèque de MFCS42.LIB (et ses variantes).

Pour utiliser cette fonction avec succès :

  • Le fichier IMAGEHLP.DLL doit se trouver sur votre chemin d'accès.Si vous n'avez pas cette DLL, la fonction affichera un message d'erreur.Consultez bibliothèque d'aide d'image pour plus d'informations sur l'ensemble de fonction fourni par IMAGEHLP.

  • Les modules qui ont des frames sur la pile doivent inclure des informations de débogage.S'ils ne contiennent pas d'informations de débogage, la fonction génère toujours une trace de la pile, mais la trace sera moins détaillées.

Configuration requise

Header: afx.h

Voir aussi

Référence

afxDump (CDumpContext dans MFC)

Concepts

Macro MFC et Globals