Freigeben über


Kontextoperator im Visual Studio-Debugger (C++)

Sie können den Kontextoperator in C++ verwenden, um einen Haltepunktspeicherort, Variablennamen oder Ausdruck zu qualifizieren. Der Kontextoperator ist nützlich, um einen Namen aus einem äußeren Bereich anzugeben, der andernfalls durch einen lokalen Namen ausgeblendet ist.

Syntax

Es gibt zwei Möglichkeiten zum Angeben des Kontexts:

  1. {,,[Modul] } Ausdruck

    Die geschweiften Klammern müssen zwei Kommas und den Namen des Moduls (ausführbare Datei oder DLL) oder den vollständigen Pfad enthalten.

    So legen Sie beispielsweise einen Haltepunkt an der SomeFunction Funktion von EXAMPLE.dll:

    {,,EXAMPLE.dll}SomeFunction
    
  2. Modul! Ausdruck

    EXAMPLE.dll!SomeFunction
    
  • Modul ist der Name eines Moduls. Sie können einen vollständigen Pfad verwenden, um zwischen Modulen mit demselben Namen zu unterscheiden.

    Wenn der Modulpfad ein Komma, ein eingebettetes Leerzeichen oder eine geschweifte Klammer enthält, müssen Sie Anführungszeichen um den Pfad verwenden, damit der Kontextparser die Zeichenfolge ordnungsgemäß erkennen kann. Einfache Anführungszeichen werden als Teil eines Windows-Dateinamens betrachtet, daher müssen Sie doppelte Anführungszeichen verwenden. Beispiel:

    {,,"a long, long, library name.dll"} g_Var
    
  • Ausdruck ist ein beliebiger gültiger C++-Ausdruck, der in ein gültiges Ziel aufgelöst wird, z. B. einen Funktionsnamen, einen Variablennamen oder eine Zeigeradresse im Modul.

    Wenn der Ausdrucksauswerter auf ein Symbol in einem Ausdruck trifft, wird in der folgenden Reihenfolge nach dem Symbol gesucht:

  1. Der lexikalische Gültigkeitsbereich erstreckt sich nach außen, beginnend mit dem aktuellen Block, einer Anweisungsreihe, die in geschweiften Klammern eingeschlossen ist, und setzt sich mit dem umgebenden Block nach außen fort. Der aktuelle Block ist der Code, der die aktuelle Position und die Befehlszeigeradresse enthält.

  2. Funktionsbereich. Die aktuelle Funktion.

  3. Klassenbereich, wenn sich die aktuelle Position in einer C++-Memberfunktion befindet. Der Klassenbereich enthält alle Basisklassen. Der Ausdrucksauswerter verwendet die normalen Dominanzregeln.

  4. Globale Symbole im aktuellen Modul.

  5. Öffentliche Symbole im aktuellen Programm.