Partilhar via


AfxDumpStack

Esta função global pode ser usada para gerar uma imagem da pilha corrente.

void AFXAPI AfxDumpStack(
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT
);

Parâmetros

  • dwTarget
    Indica o destino da saída de despejo.Valores possíveis, que podem ser combinados (OR bit a bit**|**) operador, são sistema autônomo seguintes:

    • AFX_STACK_DUMP_TARGET_TRACE   Envia saída por meio do RASTREAMENTO macro.The RASTREAMENTO macro gera saída em compilações de depurar somente; ele gera nenhuma saída nas compilações lançadas.Além disso, RASTREAMENTO podem ser redirecionados para outros destinos além do depurador.

    • AFX_STACK_DUMP_TARGET_DEFAULT   Envia saída para o destino padrão de despejo.Para uma compilação de depurar, a saída vai para o RASTREAMENTO macro.Em uma compilação de versão, a saída vai para a área de transferência.

    • AFX_STACK_DUMP_TARGET_CLIPBOARD   Envia saída para a área de transferência somente.sistema autônomo dados são colocados na área de transferência sistema autônomo texto sem formatação usando o CF_TEXT Formato de área de transferência.

    • AFX_STACK_DUMP_TARGET_BOTH   Envia saída para a área de transferência e para o RASTREAMENTO macro, simultaneamente.

    • AFX_STACK_DUMP_TARGET_ODS   Envia saída diretamente para o depurador por meio do Win32 função OutputDebugString().Esta opção irá gerar saída do depurador em ambos os depurar e libere compilações quando um depurador anexado ao processo.AFX_STACK_DUMP_TARGET_ODS atinge o depurador sempre (se ela está conectada) e não pode ser redirecionada.

Comentários

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

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

Saída

Descrição

00427D55:

O endereço de retorno da telefonar de função último.

DUMP2\DEBUG\DUMP2.EXE!

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

void AfxDumpStack(unsigned long)

O protótipo de função chamada.

+ 181 bytes

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

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

Para usar essa função com êxito:

  • O arquivo Imagehlp.dll deve estar no caminho.Se você não tem essa DLL, a função será exibida uma mensagem de erro.See Biblioteca da Ajuda de imagem para obter informações sobre o conjunto de funções fornecida pelo IMAGEHLP.

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

Requisitos

Cabeçalho: afx.h

Consulte também

Conceitos

Macros do MFC e globais

Referência

afxDump (CDumpContext no MFC)