Compartir a través de


AfxDumpStack

Esta función global se puede utilizar para generar una imagen de la pila actual.

void AFXAPI AfxDumpStack(
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT
);

Parámetros

  • dwTarget
    Indica el destino de salida de volcado de memoria.Posibles valores, que se pueden combinar mediante OR bit a bit (|) el operador, es como sigue:

    • AFX_STACK_DUMP_TARGET_TRACE Sends generado mediante la macro de TRACE .La macro de TRACE genera el resultado en las compilaciones de depuración sólo; no genera ninguna salida en las versiones de lanzamiento.Además, TRACE se puede redirigir a otros destinos además del depurador.

    • Resultado del volcado deAFX_STACK_DUMP_TARGET_DEFAULTSends al destino predeterminado.Para una versión de depuración, salida va a la macro de TRACE .En una versión de lanzamiento, salida va al portapapeles.

    • AFX_STACK_DUMP_TARGET_CLIPBOARD Sends generado al portapapeles sólo.Los datos se coloca en el portapapeles como texto sin formato mediante el formato del Portapapeles de CF_TEXT .

    • AFX_STACK_DUMP_TARGET_BOTH Sends generado en el portapapeles y a la macro de TRACE , simultáneamente.

    • AFX_STACK_DUMP_TARGET_ODS Sends generado directamente el depurador mediante la función **OutputDebugString()**de Win32.Esta opción generará la salida del depurador de depuración y lanzará compilaciones cuando hay un depurador al proceso.AFX_STACK_DUMP_TARGET_ODS alcanza el depurador (si se adjunta) y no puede ser siempre redirigido.

Comentarios

El ejemplo siguiente refleja una única línea de salida generada de llamar a AfxDumpStack de un controlador del botón en una aplicación de cuadro de diálogo 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 ===

Cada línea en el resultado anterior indica la dirección de la llamada de función pasada, nombre de ruta de acceso completa del módulo que contiene la llamada de función, y del prototipo de función denominado.Si la llamada de función en la pila no ocurre en la dirección exacta de la función, un desplazamiento de bytes se muestra.

Por ejemplo, la tabla siguiente describe la primera línea arriba de salida:

Output

Descripción

00427D55:

La dirección de devolución de llamada de función última.

DUMP2\DEBUG\DUMP2.EXE!

La ruta de acceso completa del módulo que contiene la llamada de función.

void AfxDumpStack(unsigned long)

El prototipo de función denominado.

+ 181 bytes

El desplazamiento de bytes de la dirección del prototipo de función (en este caso, void AfxDumpStack(unsigned long)) al de (en este caso, 00427D55).

AfxDumpStack está disponible en las versiones de depuración y de nondebug de las bibliotecas MFC; sin embargo, la función se vincula siempre estáticamente, incluso cuando el archivo ejecutable utiliza MFC en el archivo DLL compartido.En implementaciones de biblioteca compartida, la función se encuentra en la biblioteca de MFCS42.LIB (y sus variantes).

Para utilizar esta función correctamente:

  • El archivo IMAGEHLP.DLL debe encontrarse en la ruta.Si no tiene este archivo DLL, la función mostrará un mensaje de error.Vea Biblioteca de Ayuda de imagen para la información en el conjunto de funciones proporcionado por IMAGEHLP.

  • Los módulos que tienen marcos de la pila deben incluir información de depuración.Si no contienen información de depuración, la función continuará generando un seguimiento de la pila, pero la traza será menos detallado.

Requisitos

Header: afx.h

Vea también

Referencia

afxDump (CDumpContext en MFC)

Conceptos

Macros y funciones globales de MFC