Udostępnij za pośrednictwem


Operator kontekstu w debugerze programu Visual Studio (C++)

Możesz użyć operatora kontekstu w języku C++, aby zakwalifikować lokalizację punktu przerwania, nazwę zmiennej lub wyrażenie. Operator kontekstu jest przydatny do określania nazwy z zakresu zewnętrznego, który jest w inny sposób ukryty przez nazwę lokalną.

Składnia

Istnieją dwa sposoby określania kontekstu:

  1. Wyrażenie {,,[module] }

    Nawiasy klamrowe muszą zawierać dwa przecinki i nazwę modułu (plik wykonywalny lub bibliotekę DLL) lub pełną ścieżkę.

    Aby na przykład ustawić punkt przerwania w SomeFunction funkcji EXAMPLE.dll:

    {,,EXAMPLE.dll}SomeFunction
    
  2. moduł!Wyrażenie

    EXAMPLE.dll!SomeFunction
    
  • module to nazwa modułu. Pełną ścieżkę można użyć do uściślania między modułami o tej samej nazwie.

    Jeśli ścieżka modułu zawiera przecinek, przestrzeń osadzoną lub nawias klamrowy, należy użyć znaków cudzysłowu wokół ścieżki, aby analizator kontekstu mógł prawidłowo rozpoznać ciąg. Pojedyncze cudzysłowy są uznawane za część nazwy pliku systemu Windows, dlatego należy użyć podwójnych cudzysłowów. Przykład:

    {,,"a long, long, library name.dll"} g_Var
    
  • Wyrażenie jest dowolnym prawidłowym wyrażeniem języka C++, które rozpoznaje prawidłowe miejsce docelowe, takie jak nazwa funkcji, nazwa zmiennej lub adres wskaźnika w module.

    Gdy ewaluator wyrażeń napotka symbol w wyrażeniu, wyszukuje symbol w następującej kolejności:

  1. Zakres leksykalny na zewnątrz, począwszy od bieżącego bloku, serii instrukcji ujętych w nawiasy klamrowe i kontynuując na zewnątrz z otaczającym blokiem. Bieżący blok to kod zawierający bieżącą lokalizację, adres wskaźnika instrukcji.

  2. Zakres funkcji. Bieżąca funkcja.

  3. Zakres klasy, jeśli bieżąca lokalizacja znajduje się wewnątrz funkcji składowej języka C++. Zakres klas obejmuje wszystkie klasy bazowe. Ewaluator wyrażeń używa normalnych reguł dominacji.

  4. Symbole globalne w bieżącym module.

  5. Symbole publiczne w bieżącym programie.