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:
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
funkcjiEXAMPLE.dll
:{,,EXAMPLE.dll}SomeFunction
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:
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.
Zakres funkcji. Bieżąca funkcja.
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.
Symbole globalne w bieżącym module.
Symbole publiczne w bieżącym programie.