Condividi tramite


Metodo IDebugControl4::GetContextStackTrace (dbgeng.h)

Il metodo GetContextStackTrace restituisce i frame all'inizio dello stack di chiamate, a partire da un contesto di registro arbitrario e restituendo il contesto del registro ricostruito per ogni stack frame.

Sintassi

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
);

Parametri

[in, optional] StartContext

Specifica il contesto del registro per la parte superiore dello stack.

[in] StartContextSize

Specifica le dimensioni, in byte, del contesto del registro StartContext .

[out, optional] Frames

Riceve gli stack frame. Il numero di elementi contenuti in questa matrice è FrameSize. Se Frame è NULL, queste informazioni non vengono restituite.

[in] FramesSize

Specifica il numero di elementi nella matrice Frame.

[out, optional] FrameContexts

Riceve il contesto del registro ricostruito per ogni frame nello stack. Le voci in questa matrice corrispondono alle voci della matrice Frame . Il tipo di contesto del thread è la struttura CONTEXT per il processore effettivo della destinazione. Se FrameContexts è NULL, queste informazioni non vengono restituite.

[in] FrameContextsSize

Specifica le dimensioni, in byte, della memoria a cui punta FrameContexts. Il numero di stack frame restituiti è uguale al numero di contesti restituiti e FrameContextsSize deve essere uguale a FrameSize volte FrameContextsEntrySize.

[in] FrameContextsEntrySize

Specifica le dimensioni, in byte, di ogni contesto di frame in FrameContexts.

[out, optional] FramesFilled

Riceve il numero di fotogrammi inseriti nella matrice Frame e i contesti in FrameContexts. Se FramesFilled è NULL, queste informazioni non vengono restituite.

Valore restituito

Codice restituito Descrizione
S_OK
Il metodo è stato eseguito correttamente.
 

Questo metodo può anche restituire valori di errore. Per altre informazioni, vedere Valori restituiti.

Commenti

L'analisi dello stack restituita a Frame e FrameContexts può essere stampata usando OutputContextStackTrace.

È comune che le operazioni di rimozione dello stack ripristinino solo un subset dei registri. Ad esempio, la rimozione dello stack non ripristina sempre lo stato del registro volatile perché i registri volatili sono registri scratch e il codice non deve conservarli. I registri che non vengono ripristinati durante la rimozione vengono lasciati come ultimo valore ripristinato, pertanto è necessario prestare attenzione quando si utilizza lo stato del registro che potrebbe non essere ripristinato da una rimozione.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione dbgeng.h (include Dbgeng.h, Ntddk.h)

Vedi anche

GetStackTrace

IDebugControl4

OutputContextStackTrace

k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)