Condividi tramite


Operatore context nel debugger di Visual Studio (C++)

È possibile usare l'operatore di contesto in C++ per qualificare una posizione del punto di interruzione, un nome di variabile o un'espressione. L'operatore di contesto è utile per specificare un nome da un ambito esterno altrimenti nascosto da un nome locale.

Sintassi

Esistono due modi per specificare il contesto:

  1. {,,[module] } espressione

    Le graffe devono contenere due virgole e il nome del modulo (eseguibile o DLL) o il percorso completo.

    Ad esempio, per impostare un punto di interruzione nella SomeFunction funzione di EXAMPLE.dll:

    {,,EXAMPLE.dll}SomeFunction
    
  2. modulo! espressione

    EXAMPLE.dll!SomeFunction
    
  • module è il nome di un modulo. È possibile usare un percorso completo per evitare ambiguità tra i moduli con lo stesso nome.

    Se il percorso del modulo include una virgola, uno spazio incorporato o una parentesi graffa, è necessario usare le virgolette intorno al percorso in modo che il parser di contesto riconosca correttamente la stringa. Le virgolette singole sono considerate parte di un nome file di Windows, pertanto è necessario usare virgolette doppie. Ad esempio:

    {,,"a long, long, library name.dll"} g_Var
    
  • expression è qualsiasi espressione C++ valida che viene risolta in una destinazione valida, ad esempio un nome di funzione, un nome di variabile o un indirizzo puntatore nel modulo.

    Quando l'analizzatore di espressioni rileva un simbolo in un'espressione, cerca il simbolo nell'ordine seguente:

  1. Ambito lessicale verso l'esterno, a partire dal blocco corrente e dalla serie di istruzioni racchiuse tra parentesi graffe, e continuando verso l'esterno con il blocco circostante. Il blocco corrente è il codice che contiene la posizione corrente e l'indirizzo del puntatore d'istruzione.

  2. Ambito della funzione. Funzione attuale.

  3. Ambito della classe, se la posizione corrente si trova all'interno di una funzione membro C++. L'ambito della classe include tutte le classi di base. L'analizzatore di espressioni usa le normali regole di dominanza.

  4. Simboli globali nel modulo corrente.

  5. Simboli pubblici nel programma corrente.