共用方式為


IDebugControl4::GetContextStackTrace 方法 (dbgeng.h)

GetContextStackTrace 方法會傳回呼叫堆疊頂端的框架,從任意 註冊內容開始, 並傳回每個堆疊框架的重建緩存器內容。

語法

HRESULT GetContextStackTrace(
  [in, optional]  PVOID              StartContext,
  [in]            ULONG              StartContextSize,
  [out, optional] PDEBUG_STACK_FRAME Frames,
  [in]            ULONG              FramesSize,
  [out, optional] PVOID              FrameContexts,
  [in]            ULONG              FrameContextsSize,
  [in]            ULONG              FrameContextsEntrySize,
  [out, optional] PULONG             FramesFilled
);

參數

[in, optional] StartContext

指定堆疊頂端的緩存器內容。

[in] StartContextSize

指定 StartContext 快取器內容的大小,以位元組為單位。

[out, optional] Frames

接收堆疊框架。 這個陣列保留的項目數是 FrameSize。 如果 FramesNULL,則不會傳回此資訊。

[in] FramesSize

指定陣列中的項目數,Frames

[out, optional] FrameContexts

接收堆疊中每個框架的重新建構緩存器內容。 此陣列中的項目會對應至 Frames 陣列中的專案。 線程內容的型別是目標有效處理器的CONTEXT結構。 如果 FrameContextsNULL,則不會傳回此資訊。

[in] FrameContextsSize

指定 FrameContexts 所指向之內存的大小,以位元組為單位,。 傳回的堆疊框架數目等於傳回的內容數目,而 FrameContextsSize 必須等於 frameSize FrameContextsEntrySize

[in] FrameContextsEntrySize

指定 FrameContexts 中每個框架內容的大小,以位元組為單位,

[out, optional] FramesFilled

會接收在 frameContexts 中,Frames 陣列中放置的畫面格數目。 如果 FramesFilledNULL,則不會傳回此資訊。

傳回值

傳回碼 描述
S_OK
方法成功。
 

這個方法也可以傳回錯誤值。 如需詳細資訊,請參閱 傳回值

言論

傳回至 FramesFrameContexts 的堆棧追蹤可以使用 outputContextStackTrace 來列印。

堆疊回溯通常只會還原緩存器子集。 例如,堆疊回溯不一定會還原揮發性緩存器狀態,因為揮發性緩存器是臨時緩存器,而且程式代碼不需要保留它們。 未在回溯時還原的緩存器會保留為還原的最後一個值,因此在使用可能不會由回溯還原的緩存器狀態時,應該小心。

要求

要求 價值
目標平臺 桌面
標頭 dbgeng.h (include Dbgeng.h, Ntddk.h)

另請參閱

GetStackTrace

IDebugControl4

OutputContextStackTrace

k, kb, kc, kd, kp, kP, kv (顯示堆疊回溯)