Partilhar via


AfxDumpStack

Essa função global pode ser usada para produzir uma imagem de pilhas atual.

void AFXAPI AfxDumpStack( 
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT 
);

Parâmetros

  • dwTarget
    Indica o destino de saída de despejo. Valores possíveis, que podem ser combinados usando a bit a bit OR ( **|**o operador), é como segue:

    • Saída dos envios deAFX_STACK_DUMP_TARGET_TRACEpor meio de macro de TRACE . A macro de RASTREAR gerencia saída em construções de depuração somente; não gerencia nenhuma saída em construções de versão. Além disso, RASTREAR pode ser redirecionado para outros destinos além do depurador.

    • Saída de despejo dos envios deAFX_STACK_DUMP_TARGET_DEFAULTao destino padrão. Para uma compilação de depuração, a saída vá para a macro de RASTREAR . Em uma compilação da versão, a saída vão para a área de transferência.

    • Saída dos envios deAFX_STACK_DUMP_TARGET_CLIPBOARDpara a área de transferência somente. Os dados são colocados na área de transferência como texto sem formatação usando o formato da área de transferência de CF_TEXT .

    • AFX_STACK_DUMP_TARGET_BOTH envia saída para a área de transferência e a macro de RASTREAR , simultaneamente.

    • Saída dos envios deAFX_STACK_DUMP_TARGET_ODSdiretamente ao depurador por meio da função **OutputDebugString()**do Win32. Essa opção irá gerar saída do depurador na depuração e liberará construções quando um depurador é anexado ao processo. AFX_STACK_DUMP_TARGET_ODS sempre atingir o depurador (se for anexado) e não pode ser redirecionado.

Comentários

O exemplo a seguir reflete uma única linha de saída produzida de chamar AfxDumpStack de um manipulador do botão em um aplicativo da caixa 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 linha na saída acima indica o endereço da chamada de função last, o nome de caminho completo do módulo que contém a chamada de função, e o protótipo de função chamada. Se a chamada de função na pilha não ocorre no endereço exato da função, um deslocamento de bytes é mostrado.

Por exemplo, a tabela a seguir descreve a primeira linha de saída anterior:

Saída

Descrição

00427D55:

O endereço de retorno de chamada de função last.

DUMP2\DEBUG\DUMP2.EXE!

O nome de caminho completo do módulo que contém a chamada de função.

void AfxDumpStack(unsigned long)

O protótipo de função chamada.

+ 181 bytes

O deslocamento em bytes do endereço de protótipo de função (nesse caso, void AfxDumpStack(unsigned long)) para o endereço do remetente (nesse caso, 00427D55).

AfxDumpStack está disponível em versões de depuração e de nondebug as bibliotecas de MFC; no entanto, a função sempre está vinculada estaticamente, até mesmo quando seu arquivo executável usa o MFC em uma DLL compartilhado. Em implementações de compartilhado biblioteca, a função é encontrada na biblioteca de MFCS42.LIB (e nas variantes).

Para usar com êxito essa função:

  • O arquivo IMAGEHLP.DLL deve estar no caminho. Se você não tiver este DLL, a função exibirá uma mensagem de erro. Consulte Biblioteca de ajuda da imagem para obter informações sobre o conjunto da função fornecido por IMAGEHLP.

  • Os módulos que têm peças na pilha devem incluir informações de depuração. Se não contêm informações de depuração, a função ainda gerará um rastreamento de pilha, mas o rastreamento será menor detalhado.

Requisitos

Header: afx.h

Consulte também

Referência

afxDump (CDumpContext em MFC)

Conceitos

Macros e globais MFC