共用方式為


AfxDumpStack

這個全域函式可用來產生目前的堆疊的映像。

void AFXAPI AfxDumpStack(
   DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT
);

參數

  • dwTarget
    指出傾印輸出的目標。 可能的值,可以使用位元 OR (結合 |) 運算子,如下:

    • AFX_STACK_DUMP_TARGET_TRACE 將傳送的輸出追蹤巨集。 追蹤巨集就會產生輸出中偵錯組建中 ; 它不會產生輸出在發行的組建。 此外, 追蹤可以被重新導向至偵錯工具以外的其他目標。

    • AFX_STACK_DUMP_TARGET_DEFAULT 傳送傾印輸出到預設的目標。 輸出到偵錯組建中, 追蹤巨集。 在發行的組建輸出到 [剪貼簿]。

    • AFX_STACK_DUMP_TARGET_CLIPBOARD 將輸出傳送至 [只用剪貼簿。 在將資料放在剪貼簿],為使用純文字以 CF_TEXT 的剪貼簿格式。

    • AFX_STACK_DUMP_TARGET_BOTH 會將輸出到 [剪貼簿] 上,並傳送追蹤巨集],同時。

    • AFX_STACK_DUMP_TARGET_ODS 將輸出直接傳送至偵錯工具的 Win32 函式 OutputDebugString()。 這個選項會產生偵錯工具的輸出,在這兩種偵錯和發行組建,當偵錯工具附加至處理序。 AFX_STACK_DUMP_TARGET_ODS (如果它是) 永遠會到達偵錯工具並不能重新導向。

備註

下列範例會反映單一電話所產生的輸出行AfxDumpStack從 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 ===

上述輸出中的每一行,表示最後一個函式呼叫的函式呼叫,並呼叫的函式原型包含的模組的完整路徑名稱的位址。 如果在堆疊上的函式呼叫不會發生在函式的確切位址,則會顯示位元組位移。

比方說下, 表將說明上述輸出的第一行:

Output

描述

00427D55:

最後一個函式呼叫的傳回位址。

DUMP2\DEBUG\DUMP2.EXE!

包含函式呼叫的模組完整路徑名稱。

void AfxDumpStack(unsigned long)

呼叫的函式原型。

+ 181 bytes

以位元組為單位的地址的函式原型的位移 (在此情況下, void AfxDumpStack(unsigned long)) 與傳回位址 (這種情況下, 00427D55)。

AfxDumpStack適用於偵錯與非偵錯版本的 MFC 程式庫 ; 不過,函式會一律連結以靜態方式,即使是可執行檔使用 MFC 的共用 dll。 在實作共用程式庫中,在 MFCS42 中找到函式。LIB 程式庫 (與變種)。

若要順利使用這個函式:

  • IMAGEHLP 檔案。DLL 必須位於您的路徑。 如果您沒有這個 DLL,該函式會顯示錯誤訊息。 請參閱影像協助程式庫的函式組合所提供的 IMAGEHLP 資訊。

  • 在堆疊有框架的模組必須包含偵錯資訊。 如果它們不包含偵錯資訊,該函式還是會產生堆疊追蹤,,但較不詳細的追蹤。

需求

標頭: afx.h

請參閱

參考

afxDump (CDumpContext 在 MFC 中)

概念

MFC 巨集和全域變數