Funzione StackSnapshotCallback
Fornisce al profiler informazioni su ogni fotogramma gestito e su ogni esecuzione di fotogrammi non gestiti nello stack durante una procedura dettagliata dello stack, avviata dal metodo ICorProfilerInfo2::D oStackSnapshot .
Sintassi
HRESULT __stdcall StackSnapshotCallback (
[in] FunctionID funcId,
[in] UINT_PTR ip,
[in] COR_PRF_FRAME_INFO frameInfo,
[in] ULONG32 contextSize,
[in] BYTE context[],
[in] void *clientData
);
Parametri
funcId
[in] Se questo valore è zero, questo callback è per un'esecuzione di frame non gestiti; in caso contrario, è l'identificatore di una funzione gestita e questo callback è per un frame gestito.
ip
[in] Valore del puntatore all'istruzione del codice nativo nel frame.
frameInfo
[in] Valore COR_PRF_FRAME_INFO
che fa riferimento a informazioni sullo stack frame. Questo valore è valido solo durante questo callback.
contextSize
[in] Dimensione della CONTEXT
struttura a cui fa riferimento il context
parametro .
context
[in] Puntatore a una struttura Win32 CONTEXT
che rappresenta lo stato della CPU per questo frame.
Il context
parametro è valido solo se il flag COR_PRF_SNAPSHOT_CONTEXT è stato passato in ICorProfilerInfo2::DoStackSnapshot
.
clientData
[in] Puntatore ai dati client, che viene passato direttamente da ICorProfilerInfo2::DoStackSnapshot
.
Commenti
La StackSnapshotCallback
funzione viene implementata dal writer del profiler. È necessario limitare la complessità del lavoro svolto in StackSnapshotCallback
. Ad esempio, quando si usa ICorProfilerInfo2::DoStackSnapshot
in modo asincrono, il thread di destinazione può contenere blocchi. Se il codice all'interno StackSnapshotCallback
richiede gli stessi blocchi, potrebbe verificarsi un deadlock.
Il ICorProfilerInfo2::DoStackSnapshot
metodo chiama la StackSnapshotCallback
funzione una volta per ogni frame gestito o una volta per ogni esecuzione di frame non gestiti. Se StackSnapshotCallback
viene chiamato per un'esecuzione di frame non gestiti, il profiler può usare il contesto del registro (a cui fa riferimento il context
parametro ) per eseguire la propria procedura dettagliata dello stack non gestito. In questo caso, la struttura Win32 CONTEXT
rappresenta lo stato della CPU per il fotogramma di cui è stato eseguito il push più di recente all'interno dell'esecuzione di frame non gestiti. Anche se la struttura Win32 CONTEXT
include valori per tutti i registri, è consigliabile basarsi solo sui valori del registro del puntatore dello stack, del registro del puntatore dei fotogrammi, del registro del puntatore all'istruzione e dei registri interi nonvolatili (ovvero mantenuti).
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorProf.idl
Libreria: CorGuids.lib
Versioni di .NET Framework: Disponibile dalla versione 1.0