Udostępnij za pośrednictwem


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.
$registername

lub

@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 IDynamicMetaObjectProviderelement . Interfejs. Składnia jest $dynamic, obiektem. Ta funkcja dotyczy tylko kodu korzystającego z programu .NET Framework w wersji 4 lub nowszej.