IDiaStackFrame
Espone le proprietà di un frame dello stack.
Sintassi
IDiaStackFrame : IUnknown
Metodi nell'ordine Vtable
Di seguito sono riportati i metodi supportati da questa interfaccia:
metodo | Descrizione |
---|---|
IDiaStackFrame::get_allocatesBasePointer | Recupera un flag che indica che il puntatore di base viene allocato per il codice in questo intervallo di indirizzi. Questo metodo è deprecato. |
IDiaStackFrame::get_base | Recupera la base dell'indirizzo del frame. |
IDiaStackFrame::get_cplusplusExceptionHandling | Recupera un flag che indica che la gestione delle eccezioni C++ è attiva. |
IDiaStackFrame::get_functionStart | Recupera un flag che indica che il blocco contiene il punto di ingresso di una funzione. |
IDiaStackFrame::get_lengthLocals | Recupera il numero di byte di variabili locali di cui è stato eseguito il push nello stack. |
IDiaStackFrame::get_lengthParams | Recupera il numero di byte di parametri inseriti nello stack. |
IDiaStackFrame::get_lengthProlog | Recupera il numero di byte di codice prologo nel blocco |
IDiaStackFrame::get_lengthSavedRegisters | Recupera il numero di byte di registri salvati inseriti nello stack. |
IDiaStackFrame::get_localsBase | Recupera la base di indirizzi delle variabili locali. |
IDiaStackFrame::get_maxStack | Recupera il numero massimo di byte inseriti nello stack nel frame. |
IDiaStackFrame::get_rawLVarInstanceValue | Recupera il valore della variabile locale specificata come byte non elaborati. |
IDiaStackFrame::get_registerValue | Recupera il valore di un registro specificato. |
IDiaStackFrame::get_returnAddress | Recupera l'indirizzo restituito del frame. |
IDiaStackFrame::get_size | Recupera le dimensioni del frame in byte. |
IDiaStackFrame::get_systemExceptionHandling | Recupera un flag che indica che la gestione delle eccezioni di sistema è attiva. |
IDiaStackFrame::get_type | Recupera il tipo di frame. |
Osservazioni:
Uno stack frame è un'astrazione di una chiamata di funzione durante l'esecuzione.
Note per i chiamanti
Ottenere questa interfaccia chiamando il metodo IDiaEnumStackFrames::Next . Per un esempio su come ottenere l'interfacciaIDiaStackFrame
, vedere l'interfaccia IDiaEnumStackFrames.
Esempio
In questo esempio vengono visualizzati vari attributi di uno stack frame.
void PrintStackFrame(IDiaStackFrame* pFrame)
{
if (pFrame != NULL)
{
ULONGLONG bottom = 0;
ULONGLONG top = 0;
if (pFrame->get_base(&bottom) == S_OK &&
pFrame->get_registerValue( CV_REG_ESP, &top ) == S_OK )
{
printf("range = 0x%08I64x - 0x%08I64x\n", bottom, top);
}
ULONGLONG returnAddress = 0;
if (pFrame->get_returnAddress(&returnAddress) == S_OK)
{
printf("return address = 0x%08I64x\n", returnAddress);
}
DWORD lengthFrame = 0;
DWORD lengthLocals = 0;
DWORD lengthParams = 0;
DWORD lengthProlog = 0;
DWORD lengthSavedRegs = 0;
if (pFrame->get_size(&lengthFrame) == S_OK &&
pFrame->get_lengthLocals(&lengthLocals) == S_OK &&
pFrame->get_lengthParams(&lengthParams) == S_OK &&
pFrame->get_lengthProlog(&lengthProlog) == S_OK &&
pFrame->get_lengthSavedRegisters(&lengthSavedRegs) == S_OK)
{
printf("stack frame size = 0x%08lx bytes\n", lengthFrame);
printf("length of locals = 0x%08lx bytes\n", lengthLocals);
printf("length of parameters = 0x%08lx bytes\n", lengthParams);
printf("length of prolog = 0x%08lx bytes\n", lengthProlog);
printf("length of saved registers = 0x%08lx bytes\n", lengthSavedRegs);
}
}
}
Requisiti
Intestazione: Dia2.h
Libreria: diaguids.lib
DLL: msdia80.dll