Pseudovariables w debugerze programu Visual Studio
Pseudovariables to terminy używane do wyświetlania określonych informacji w oknie zmiennej lub w oknie dialogowym QuickWatch . Można wprowadzić pseudovariable w taki sam sposób, jak w przypadku wprowadzania zmiennej normalnej. Pseudovariables nie są jednak zmiennymi i nie odpowiadają nazwom zmiennych w programie.
Przykład
Załóżmy, że piszesz aplikację kodu natywnego i chcesz zobaczyć liczbę dojść przydzielonych w aplikacji. W oknie Obserwowanie możesz wprowadzić następujące pseudovariable w kolumnie Nazwa, a następnie nacisnąć Return, aby go ocenić:
$handles
W kodzie natywnym można użyć pseudovariables pokazanych w poniższej tabeli:
Pseudowarianowalne | Function |
---|---|
$err |
Wyświetla ostatnią wartość błędu ustawioną za pomocą funkcji SetLastError. Wyświetlana wartość reprezentuje, co zostanie zwrócone przez funkcję GetLastError. Użyj $err,hr polecenia , aby wyświetlić zdekodowany formularz tej wartości. Jeśli na przykład ostatni błąd miał wartość 3, zostanie $err,hr wyświetlony komunikat ERROR_PATH_NOT_FOUND : The system cannot find the path specified. |
$handles |
Wyświetla liczbę dojść przydzielonych w aplikacji. |
$vframe |
Wyświetla adres bieżącej ramki stosu. |
$tid |
Wyświetla identyfikator wątku dla bieżącego wątku. |
$env |
Wyświetla blok środowiska w przeglądarce ciągów. |
$cmdline |
Wyświetla ciąg wiersza polecenia, który uruchomił program. |
$pid |
Wyświetla identyfikator procesu. |
$ registernamelub @ registername |
Wyświetla zawartość rejestru registername. Zwykle można wyświetlić zawartość rejestru tylko po wprowadzeniu nazwy rejestru. Jedynym czasem, w którym należy użyć tej składni, jest przeciążenie nazwy zmiennej przez nazwę rejestru. Jeśli nazwa rejestru jest taka sama jak nazwa zmiennej w bieżącym zakresie, debuger interpretuje nazwę jako nazwę zmiennej. Dzieje się tak, gdy $ jest przydatna nazwa_rejestracji lub @ nazwa_rejestracji. |
$clk |
Wyświetla czas w cyklach zegara. |
$user |
Wyświetla strukturę z informacjami o koncie dla konta, na którym działa aplikacja. Ze względów bezpieczeństwa informacje o hasłach nie są wyświetlane. |
$exceptionstack |
Wyświetla ślad stosu bieżącego wyjątku środowisko wykonawcze systemu Windows. $ exceptionstack działa tylko w aplikacjach platformy UWP. $ exceptionstack nie jest obsługiwany w przypadku wyjątków C++ i SEH |
$returnvalue |
Wyświetla wartość zwracaną metody. |
W języku C# można użyć pseudovariables pokazanych w poniższej tabeli:
Pseudowarianowalne | Function |
---|---|
$exception |
Wyświetla informacje o ostatnim wyjątku. Jeśli nie wystąpił wyjątek, ocena $exception wyświetla komunikat o błędzie.Po wyłączeniu $exception Asystenta wyjątków zostanie automatycznie dodany do okna Ustawienia lokalne, gdy wystąpi wyjątek. |
$user |
Wyświetla strukturę z informacjami o koncie dla konta, na którym działa aplikacja. Ze względów bezpieczeństwa informacje o hasłach nie są wyświetlane. |
$returnvalue |
Wyświetla wartość zwracaną metody .NET. |
$threadSmallObjectHeapBytes |
Wyświetla łączną liczbę bajtów przydzielonych w małym stercie obiektu przez bieżący wątek. (.NET 6+) |
$threadUserOldHeapBytes |
Wyświetla całkowitą liczbę bajtów przydzielonych w starym stercie użytkownika przez bieżący wątek. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+) |
W języku Visual Basic można użyć pseudovariables pokazanych w poniższej tabeli:
Pseudowarianowalne | Function |
---|---|
$exception |
Wyświetla informacje o ostatnim wyjątku. Jeśli nie wystąpił wyjątek, ocena $exception wyświetla komunikat o błędzie. |
$delete lub $$delete |
Usuwa niejawną zmienną, która została utworzona w oknie natychmiastowym . Składnia jest $delete, zmienna lub$delete, zmienna. |
$objectids lub $listobjectids |
Wyświetla wszystkie aktywne identyfikatory obiektów jako elementy podrzędne określonego wyrażenia. Składnia jest $objectid, wyrażeniem lub$listobjectids, wyrażeniem. |
$ N # |
Wyświetla obiekt o identyfikatorze obiektu równym N. |
$dynamic |
Wyświetla specjalny węzeł Widok dynamiczny dla obiektu, który implementuje IDynamicMetaObjectProvider element . Interfejs. Składnia jest $dynamic, obiektem. Ta funkcja dotyczy tylko kodu korzystającego z programu .NET Framework w wersji 4 lub nowszej. |