Condividi tramite


Frame (Imposta contesto locale)

Il comando con estensione frame specifica il contesto locale (ambito) usato per interpretare le variabili locali o visualizzare il contesto locale corrente.

.frame [/c] [/r] [FrameNumber] 
.frame [/c] [/r] = BasePtr [FrameIncrement] 
.frame [/c] [/r] = BasePtr StackPtr InstructionPtr 

Parametri

/C
Imposta il frame specificato come contesto di override locale corrente. Questa azione consente a un utente di accedere ai registri non volatile per qualsiasi funzione nello stack di chiamate.

/R
Visualizza registri e altre informazioni sul contesto locale specificato.

FrameNumber
Specifica il numero del frame di cui si desidera il contesto locale. Se questo parametro è zero, il comando specifica il frame corrente. Se si omette questo parametro, questo comando visualizza il contesto locale corrente.

BasePtr
Specifica il puntatore di base per l'analisi dello stack utilizzato per determinare il frame, se si aggiunge un segno di uguale (=) dopo il nome del comando (.frame). In un processore basato su x86 si aggiunge un altro argomento dopo BasePtr (interpretato come FrameIncrement) o due altri argomenti dopo BasePtr (interpretati come InstructionPtr e StackPtr).

FrameIncrement
(solo processore basato su x86)

Specifica una quantità aggiuntiva di fotogrammi oltre il puntatore di base. Ad esempio, se il puntatore di base 0x0012FF00 è l'indirizzo del frame 3, il comando .frame 12ff00 equivale a .frame 3 e .frame 12ff00 2 equivale a .frame 5.

StackPtr
(solo processore basato su x86) Specifica il puntatore allo stack per l'analisi dello stack utilizzata per determinare il frame. Se si omette StackPtr e InstructionPtr, il debugger usa il puntatore dello stack specificato dal registro esp e il puntatore all'istruzione specificato dal registro eip .

InstructionPtr
(solo processore basato su x86) Specifica il puntatore all'istruzione per l'analisi dello stack utilizzata per determinare il frame. Se si omette StackPtr e InstructionPtr, il debugger usa il puntatore dello stack specificato dal registro esp e il puntatore all'istruzione specificato dal registro eip .

Ambiente

Elemento Descrizione
Modalità Modalità utente, modalità kernel
Targets Live, crash dump
Piattaforme Tutti

Informazioni aggiuntive

Per altre informazioni sul contesto locale e altre impostazioni di contesto, vedere Modifica dei contesti. Per altre informazioni su come visualizzare variabili locali e altri comandi correlati alla memoria, vedere Lettura e scrittura di memoria.

Commenti

Quando un'applicazione è in esecuzione, il significato delle variabili locali dipende dalla posizione del contatore del programma, perché l'ambito di tali variabili si estende solo alla funzione in cui sono definiti. Se non si usa il comando con estensione frame, il debugger usa l'ambito della funzione corrente (il frame corrente nello stack) come contesto locale.

Per modificare il contesto locale, usare il comando .frame e specificare il numero di frame desiderato.

Il numero di frame è la posizione dello stack frame all'interno dell'analisi dello stack. È possibile visualizzare questa traccia dello stack con il comando k (Display Stack Backtrace) o la finestra Chiamate. La prima riga (il frame corrente) è il numero di fotogramma 0. Le righe successive rappresentano i numeri di fotogramma 1, 2, 3 e così via.

Se si usa il parametro n con il comando k , il comando k visualizza i numeri di frame insieme all'analisi dello stack. Questi numeri di frame vengono sempre visualizzati in formato esadecimale. D'altra parte, il comando .frame interpreta il relativo argomento nel radix predefinito, a meno che non si esegua l'override di questa impostazione con un prefisso, ad esempio 0x. Per modificare il radix predefinito, usare il comando n (Set Number Base).

È possibile impostare il contesto locale su un frame dello stack diverso per consentire di visualizzare nuove informazioni sulle variabili locali. Tuttavia, le variabili effettive disponibili dipendono dal codice in esecuzione.

Il contesto locale viene reimpostato sull'ambito del contatore del programma se si verifica un'esecuzione dell'applicazione. Il contesto locale viene reimpostato sullo stack frame superiore se il contesto del registro viene modificato.