Udostępnij za pośrednictwem


AfxDumpStack

Tej funkcji globalnych, można wygenerować obraz bieżącego stosu.

void AFXAPI AfxDumpStack(
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT
);

Parametry

  • dwTarget
    Wskazuje docelowy zrzutu danych wyjściowych.Możliwe wartości, które mogą być połączone za pomocą logiczną lub)|) operator, są następujące:

    • AFX_STACK_DUMP_TARGET_TRACE wysyła dane wyjściowe z śledzenia makro.Śledzenia makro generuje dane wyjściowe w kompilacjach debugowania tylko; generuje żadnych danych wyjściowych w trybie budowania wersji.Ponadto śledzenia mogą zostać przekierowane do innych celów poza debugera.

    • AFX_STACK_DUMP_TARGET_DEFAULT wysyła zrzutu danych wyjściowych do domyślnego obiektu docelowego.Budowania debug, dane wyjściowe prowadzi do śledzenia makro.W wydanej kompilacji wyjście prowadzi do Schowka.

    • AFX_STACK_DUMP_TARGET_CLIPBOARD wysyła dane wyjściowe do Schowka tylko.Dane są umieszczane w Schowku jako zwykły tekst za pomocą CF_TEXT format Schowka.

    • AFX_STACK_DUMP_TARGET_BOTH wysyła dane wyjściowe do Schowka i śledzenia makro, jednocześnie.

    • AFX_STACK_DUMP_TARGET_ODS wysyła dane wyjściowe bezpośrednio do debugera z wykorzystaniem funkcji Win32 OutputDebugString().Ta opcja będzie generować danych wyjściowych debugera w obu debugowania i zwolnij kompilacje, gdy jest dołączony debuger do procesu.AFX_STACK_DUMP_TARGET_ODS zawsze osiągnie debuger (jeśli jest dołączony) i nie mogą być przekierowane.

Uwagi

W poniższym przykładzie odzwierciedla pojedynczy wiersz danych wyjściowych generowanych wywołania AfxDumpStack z obsługi przycisku w aplikacji MFC, okno dialogowe:

=== 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żdy wiersz w powyższych danych wyjściowych wskazuje adres ostatnie wywołanie funkcji pełną nazwę ścieżki modułu, który zawiera wywołanie funkcji i prototyp funkcji o nazwie.Jeśli wywołanie funkcji na stosie nie dzieje się na dokładny adres funkcji, wyświetlany jest Przesunięcie bajtów.

Na przykład w poniższej tabeli opisano pierwszy wiersz powyżej dane wyjściowe:

Dane wyjściowe

Opis

00427D55:

Adres zwrotny ostatnie wywołanie funkcji.

DUMP2\DEBUG\DUMP2.EXE!

Pełna ścieżka nazwa modułu, który zawiera wywołanie funkcji.

void AfxDumpStack(unsigned long)

Prototyp funkcji o nazwie.

+ 181 bytes

Przesunięcie w bajtach, od adresu prototyp funkcji (w tym przypadku void AfxDumpStack(unsigned long)) na adres zwrotny (w tym przypadku 00427D55).

AfxDumpStackjest dostępna w wersjach debugowania i nondebug biblioteki MFC; Jednak funkcja jest zawsze połączony statycznie, nawet w przypadku, gdy plik wykonywalny używa MFC w udostępnionym pliku DLL.W implementacjach współużytkowanej biblioteki funkcji można znaleźć w MFCS42.Biblioteka LIB (i jego odmiany).

Aby użyć tej funkcji pomyślnie:

  • Pliku IMAGEHLP.Biblioteka DLL musi być na ścieżce.Jeśli nie masz tej biblioteki DLL, funkcja zostanie wyświetlony komunikat o błędzie.Zobacz Obrazu Pomoc biblioteki do informacji na temat zestawu funkcji, świadczone przez IMAGEHLP.

  • Moduły, które mają ramek na stosie musi zawierać informacje debugowania.Jeśli nie zawierają informacji o debugowaniu, funkcja nadal spowoduje śledzenie stosu, ale śledzenia będzie mniej szczegółowe.

Wymagania

Nagłówek: afx.h

Zobacz też

Informacje

afxDump (CDumpContext w MFC)

Koncepcje

Makra MFC i Globals