Udostępnij za pomocą


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. {,,[module] } wyrażenie

    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 funkcji SomeFunctionEXAMPLE.dll:

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

    EXAMPLE.dll!SomeFunction
    
  • module to nazwa modułu. Można użyć pełnej ścieżki do rozróżnienia modułów 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. Na przykład

    {,,"a long, long, library name.dll"} g_Var
    
  • Wyrażenie w języku C++ jest to każde prawidłowe wyrażenie, które odnosi się do prawidłowego celu, takiego 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 rozpoczyna się od aktualnego bloku, czyli serii instrukcji ujętych w nawiasy klamrowe, i kontynuuje na zewnątrz, obejmując otaczający blok. 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.