Sdílet prostřednictvím


AfxDumpStack

Tento globální funkce lze použít k vytvoření bitové kopie aktuálního zásobníku.

void AFXAPI AfxDumpStack( 
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT 
);

Parametry

  • dwTarget
    Označuje cílové výstupní výpisu.Možné hodnoty, které lze kombinovat pomocí bitového operátoru OR (|) operátor, jsou následující:

    • AFX_STACK_DUMP_TARGET_TRACE odešle výstup prostřednictvím Sledování makra.Sledování makro generuje výstup v sestavení ladění. žádný výstup generuje ve verzích pro produkční nasazení.Také Sledování může být přesměrován na jiné cíle kromě ladicí program.

    • AFX_STACK_DUMP_TARGET_DEFAULT výpis odešle výstup do výchozí cíl.Pro sestavení ladění výstup přejde trasování makra.Výstup ve vydané verzi přejde do schránky.

    • AFX_STACK_DUMP_TARGET_CLIPBOARD odešle výstup pouze do schránky.Jsou data umístěna do schránky jako prostý text pomocí CF_TEXT formát schránky.

    • AFX_STACK_DUMP_TARGET_BOTH odešle výstup do schránky a Sledování makro, současně.

    • AFX_STACK_DUMP_TARGET_ODS odešle výstup přímo do ladicího programu pomocí funkce Win32 OutputDebugString().Tato možnost bude generovat výstup ladění v obou ladění a verzi sestavení, pokud je připojen ladicí program k procesu.AFX_STACK_DUMP_TARGET_ODS vždy dosáhne ladicí program (Pokud je připevněna) a nemůže být přesměrovány.

Poznámky

Níže uvedený příklad představuje jeden řádek výstupu generované z volání AfxDumpStack z obslužná rutina události tlačítka v dialogovém okně aplikace knihovny 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 ===

Každý řádek ve výše uvedeném výstupu označuje adresu poslední volání funkce úplný název cesty modulu, který obsahuje volání funkce a prototyp funkce nazývá.Pokud volání funkce v zásobníku na přesnou adresu funkce nestane, je zobrazen posun bajtů.

Následující tabulka popisuje například první řádek výše výstupu:

Výsledek

Popis

00427D55:

Zpáteční adresa posledního volání funkce.

DUMP2\DEBUG\DUMP2.EXE!

Úplnou cestu a název modulu obsahujícího volání funkce.

void AfxDumpStack(unsigned long)

Prototyp funkce nazývá.

+ 181 bytes

Offset v bajtech od adresy prototyp funkce (v tomto případě void AfxDumpStack(unsigned long)) na zpáteční adresu (v tomto případě 00427D55).

AfxDumpStackje k dispozici v ladění a nondebug verze knihovny MFC; však funkce je vždy spojen staticky, i když spustitelný soubor používá knihovnu MFC v knihovně sdílené DLL.V implementacích knihovny sdílené funkce naleznete v MFCS42.LIB knihovny (a jeho varianty).

Chcete-li použít tuto funkci úspěšně:

  • Soubor IMAGEHLP.Knihovny DLL musí být na cestě.Pokud nemáte tuto knihovnu DLL, funkce se zobrazí chybová zpráva.Viz Knihovny nápovědy obraz informace o sada funkcí poskytovaných IMAGEHLP.

  • Moduly, které mají snímky v zásobníku musí zahrnovat informace pro ladění.Pokud neobsahují informace o ladění, trasování zásobníku stále vygeneruje funkci, ale bude méně podrobné trasování.

Požadavky

Záhlaví: afx.h

Viz také

Referenční dokumentace

afxDump (CDumpContext v prostředí MFC)

Koncepty

MFC – makra a globální prvky